diff --git a/.github/labeler.yml b/.github/labeler.yml
index 53921f7f959..41b2475f678 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -22,7 +22,6 @@ keymap:
via:
- keyboards/**/keymaps/via/*
cli:
- - bin/qmk
- requirements.txt
- lib/python/**/*
python:
diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml
index 7a8dc8540fa..2ea810958b4 100644
--- a/.github/workflows/cli.yml
+++ b/.github/workflows/cli.yml
@@ -4,11 +4,10 @@ on:
push:
branches:
- master
- - future
+ - develop
pull_request:
paths:
- 'lib/python/**'
- - 'bin/qmk'
- 'requirements.txt'
- '.github/workflows/cli.yml'
diff --git a/.github/workflows/format.yaml b/.github/workflows/format.yaml
index 645e0ce106d..f1525526ce8 100644
--- a/.github/workflows/format.yaml
+++ b/.github/workflows/format.yaml
@@ -36,14 +36,16 @@ jobs:
- name: Run qmk formatters
shell: 'bash {0}'
run: |
- qmk format-c --core-only $(< ~/files.txt)
- qmk format-python $(< ~/files.txt)
- qmk format-text $(< ~/files.txt)
- git diff
+ cat ~/files_added.txt ~/files_modified.txt > ~/files_changed.txt
+ qmk format-c --core-only $(< ~/files_changed.txt) || true
+ qmk format-python $(< ~/files_changed.txt) || true
+ qmk format-text $(< ~/files_changed.txt) || true
- name: Fail when formatting required
run: |
+ git diff
for file in $(git diff --name-only); do
- echo "::error file=${file}::::File Requires Formatting"
+ echo "File '${file}' Requires Formatting"
+ echo "::error file=${file}::Requires Formatting"
done
test -z "$(git diff --name-only)"
diff --git a/.github/workflows/unit_test.yml b/.github/workflows/unit_test.yml
new file mode 100644
index 00000000000..26bcb2f5110
--- /dev/null
+++ b/.github/workflows/unit_test.yml
@@ -0,0 +1,30 @@
+name: Unit Tests
+
+on:
+ push:
+ branches:
+ - master
+ - develop
+ pull_request:
+ paths:
+ - 'builddefs/**'
+ - 'quantum/**'
+ - 'platforms/**'
+ - 'tmk_core/**'
+ - 'tests/**'
+ - '*.mk'
+ - 'Makefile'
+ - '.github/workflows/unit_test.yml'
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+
+ container: qmkfm/base_container
+
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ submodules: recursive
+ - name: Run tests
+ run: make test:all
diff --git a/.gitignore b/.gitignore
index f3b76f7edf5..768f40b1918 100644
--- a/.gitignore
+++ b/.gitignore
@@ -86,3 +86,8 @@ __pycache__
# Allow to exist but don't include it in the repo
user_song_list.h
+
+# clangd
+compile_commands.json
+.clangd/
+.cache/
diff --git a/.gitmodules b/.gitmodules
index 324ef790d34..681693a5a46 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -6,10 +6,6 @@
path = lib/chibios-contrib
url = https://github.com/qmk/ChibiOS-Contrib
branch = master
-[submodule "lib/ugfx"]
- path = lib/ugfx
- url = https://github.com/qmk/uGFX
- branch = master
[submodule "lib/googletest"]
path = lib/googletest
url = https://github.com/qmk/googletest
diff --git a/Makefile b/Makefile
index 5f25eef14b2..88f430619e3 100644
--- a/Makefile
+++ b/Makefile
@@ -30,11 +30,7 @@ endif
endif
# Determine which qmk cli to use
-ifeq (,$(shell which qmk))
- QMK_BIN = bin/qmk
-else
- QMK_BIN = qmk
-endif
+QMK_BIN := qmk
# avoid 'Entering|Leaving directory' messages
MAKEFLAGS += --no-print-directory
@@ -58,8 +54,6 @@ BUILD_DIR := $(ROOT_DIR)/.build
TEST_DIR := $(BUILD_DIR)/test
ERROR_FILE := $(BUILD_DIR)/error_occurred
-MAKEFILE_INCLUDED=yes
-
# Helper function to process the newt element of a space separated path
# It works a bit like the traditional functional head tail
# so the CURRENT_PATH_ELEMENT will become the new head
@@ -97,31 +91,8 @@ distclean: clean
rm -f *.bin *.hex *.uf2
echo 'done.'
-#Compatibility with the old make variables, anything you specify directly on the command line
-# always overrides the detected folders
-ifdef keyboard
- KEYBOARD := $(keyboard)
-endif
-ifdef keymap
- KEYMAP := $(keymap)
-endif
-
-# Uncomment these for debugging
-# $(info Keyboard: $(KEYBOARD))
-# $(info Keymap: $(KEYMAP))
-
-# Set the default goal depending on where we are running make from
-# this handles the case where you run make without any arguments
.DEFAULT_GOAL := all:all
-ifneq ($(KEYMAP),)
- .DEFAULT_GOAL := $(KEYBOARD):$(KEYMAP)
-else ifneq ($(KEYBOARD),)
- # Inside a keyboard folder, build all keymaps for all subprojects
- # Note that this is different from the old behaviour, which would
- # build only the default keymap of the default keyboard
- .DEFAULT_GOAL := $(KEYBOARD):all
-endif
# Compare the start of the RULE variable with the first argument($1)
@@ -245,10 +216,6 @@ define PARSE_RULE
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(shell util/list_keyboards.sh | sort -u)),true)
KEYBOARD_RULE=$$(MATCHED_ITEM)
$$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM)))
- # Otherwise use the KEYBOARD variable, which is determined either by
- # the current directory you run make from, or passed in as an argument
- else ifneq ($$(KEYBOARD),)
- $$(eval $$(call PARSE_KEYBOARD,$$(KEYBOARD)))
else
$$(info make: *** No rule to make target '$1'. Stop.)
$$(info |)
@@ -411,11 +378,12 @@ define PARSE_ALL_KEYMAPS
endef
define BUILD_TEST
- TEST_NAME := $1
+ TEST_PATH := $1
+ TEST_NAME := $$(notdir $$(TEST_PATH))
MAKE_TARGET := $2
COMMAND := $1
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_test.mk $$(MAKE_TARGET)
- MAKE_VARS := TEST=$$(TEST_NAME) FULL_TESTS="$$(FULL_TESTS)"
+ MAKE_VARS := TEST=$$(TEST_NAME) TEST_PATH=$$(TEST_PATH) FULL_TESTS="$$(FULL_TESTS)"
MAKE_MSG := $$(MSG_MAKE_TEST)
$$(eval $$(call BUILD))
ifneq ($$(MAKE_TARGET),clean)
@@ -439,7 +407,7 @@ define PARSE_TEST
ifeq ($$(TEST_NAME),all)
MATCHED_TESTS := $$(TEST_LIST)
else
- MATCHED_TESTS := $$(foreach TEST,$$(TEST_LIST),$$(if $$(findstring $$(TEST_NAME),$$(TEST)),$$(TEST),))
+ MATCHED_TESTS := $$(foreach TEST, $$(TEST_LIST),$$(if $$(findstring $$(TEST_NAME), $$(notdir $$(TEST))), $$(TEST),))
endif
$$(foreach TEST,$$(MATCHED_TESTS),$$(eval $$(call BUILD_TEST,$$(TEST),$$(TEST_TARGET))))
endef
@@ -458,7 +426,8 @@ define SET_SILENT_MODE
endif
endef
-include $(ROOT_DIR)/message.mk
+include paths.mk
+include $(BUILDDEFS_PATH)/message.mk
ifeq ($(strip $(BREAK_ON_ERRORS)), yes)
HANDLE_ERROR = exit 1
@@ -494,7 +463,6 @@ endef
ifndef SKIP_GIT
if [ ! -e lib/chibios ]; then git submodule sync lib/chibios && git submodule update --depth 50 --init lib/chibios; fi
if [ ! -e lib/chibios-contrib ]; then git submodule sync lib/chibios-contrib && git submodule update --depth 50 --init lib/chibios-contrib; fi
- if [ ! -e lib/ugfx ]; then git submodule sync lib/ugfx && git submodule update --depth 50 --init lib/ugfx; fi
if [ ! -e lib/lufa ]; then git submodule sync lib/lufa && git submodule update --depth 50 --init lib/lufa; fi
if [ ! -e lib/vusb ]; then git submodule sync lib/vusb && git submodule update --depth 50 --init lib/vusb; fi
if [ ! -e lib/printf ]; then git submodule sync lib/printf && git submodule update --depth 50 --init lib/printf; fi
diff --git a/bin/qmk b/bin/qmk
deleted file mode 100755
index 617f9928264..00000000000
--- a/bin/qmk
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env python3
-"""CLI wrapper for running QMK commands.
-"""
-import os
-import sys
-from pathlib import Path
-
-# Add the QMK python libs to our path
-script_dir = Path(os.path.realpath(__file__)).parent
-qmk_dir = script_dir.parent
-python_lib_dir = Path(qmk_dir / 'lib' / 'python').resolve()
-sys.path.append(str(python_lib_dir))
-
-# Setup the CLI
-import milc # noqa
-
-milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}'
-
-
-@milc.cli.entrypoint('QMK Helper Script')
-def qmk_main(cli):
- """The function that gets run when no subcommand is provided.
- """
- cli.print_help()
-
-
-def main():
- """Setup our environment and then call the CLI entrypoint.
- """
- # Change to the root of our checkout
- os.environ['ORIG_CWD'] = os.getcwd()
- os.environ['DEPRECATED_BIN_QMK'] = '1'
- os.chdir(qmk_dir)
-
- print('Warning: The bin/qmk script is being deprecated. Please install the QMK CLI: python3 -m pip install qmk', file=sys.stderr)
-
- # Import the subcommands
- import milc.subcommand.config # noqa
- import qmk.cli # noqa
-
- # Execute
- return_code = milc.cli()
-
- if return_code is False:
- exit(1)
-
- elif return_code is not True and isinstance(return_code, int):
- if return_code < 0 or return_code > 255:
- milc.cli.log.error('Invalid return_code: %d', return_code)
- exit(255)
-
- exit(return_code)
-
- exit(0)
-
-
-if __name__ == '__main__':
- main()
diff --git a/bootloader.mk b/bootloader.mk
deleted file mode 100644
index 5ba118fb443..00000000000
--- a/bootloader.mk
+++ /dev/null
@@ -1,154 +0,0 @@
-# Copyright 2017 Jack Humbert
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-
-# If it's possible that multiple bootloaders can be used for one project,
-# you can leave this unset, and the correct size will be selected
-# automatically.
-#
-# Sets the bootloader defined in the keyboard's/keymap's rules.mk
-# Current options:
-#
-# AVR:
-# halfkay PJRC Teensy
-# caterina Pro Micro (Sparkfun/generic)
-# atmel-dfu Atmel factory DFU
-# lufa-dfu LUFA DFU
-# qmk-dfu QMK DFU (LUFA + blinkenlight)
-# qmk-hid QMK HID (LUFA + blinkenlight)
-# bootloadhid HIDBootFlash compatible (ATmega32A)
-# usbasploader USBaspLoader (ATmega328P)
-# ARM:
-# kiibohd Input:Club Kiibohd bootloader (only used on their boards)
-# stm32duino STM32Duino (STM32F103x8)
-# stm32-dfu STM32 USB DFU in ROM
-# apm32-dfu APM32 USB DFU in ROM
-#
-# BOOTLOADER_SIZE can still be defined manually, but it's recommended
-# you add any possible configuration to this list
-
-ifeq ($(strip $(BOOTLOADER)), atmel-dfu)
- OPT_DEFS += -DBOOTLOADER_ATMEL_DFU
- OPT_DEFS += -DBOOTLOADER_DFU
- ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
- BOOTLOADER_SIZE = 4096
- endif
- ifneq (,$(filter $(MCU), at90usb1286 at90usb1287))
- BOOTLOADER_SIZE = 8192
- endif
-endif
-ifeq ($(strip $(BOOTLOADER)), lufa-dfu)
- OPT_DEFS += -DBOOTLOADER_LUFA_DFU
- OPT_DEFS += -DBOOTLOADER_DFU
- ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
- BOOTLOADER_SIZE ?= 4096
- endif
- ifneq (,$(filter $(MCU), at90usb1286 at90usb1287))
- BOOTLOADER_SIZE ?= 8192
- endif
-endif
-ifeq ($(strip $(BOOTLOADER)), qmk-dfu)
- OPT_DEFS += -DBOOTLOADER_QMK_DFU
- OPT_DEFS += -DBOOTLOADER_DFU
- ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
- BOOTLOADER_SIZE ?= 4096
- endif
- ifneq (,$(filter $(MCU), at90usb1286 at90usb1287))
- BOOTLOADER_SIZE ?= 8192
- endif
-endif
-ifeq ($(strip $(BOOTLOADER)), qmk-hid)
- OPT_DEFS += -DBOOTLOADER_QMK_HID
- OPT_DEFS += -DBOOTLOADER_HID
- BOOTLOADER_SIZE ?= 4096
-endif
-ifeq ($(strip $(BOOTLOADER)), halfkay)
- OPT_DEFS += -DBOOTLOADER_HALFKAY
- ifeq ($(strip $(MCU)), atmega32u4)
- BOOTLOADER_SIZE = 512
- endif
- ifeq ($(strip $(MCU)), at90usb1286)
- BOOTLOADER_SIZE = 1024
- endif
-endif
-ifeq ($(strip $(BOOTLOADER)), caterina)
- OPT_DEFS += -DBOOTLOADER_CATERINA
- BOOTLOADER_SIZE = 4096
-endif
-ifneq (,$(filter $(BOOTLOADER), bootloadhid bootloadHID))
- OPT_DEFS += -DBOOTLOADER_BOOTLOADHID
- BOOTLOADER_SIZE = 4096
-endif
-ifneq (,$(filter $(BOOTLOADER), usbasploader USBasp))
- OPT_DEFS += -DBOOTLOADER_USBASP
- BOOTLOADER_SIZE = 4096
-endif
-ifeq ($(strip $(BOOTLOADER)), lufa-ms)
- OPT_DEFS += -DBOOTLOADER_MS
- BOOTLOADER_SIZE ?= 8192
- FIRMWARE_FORMAT = bin
-cpfirmware: lufa_warning
-.INTERMEDIATE: lufa_warning
-lufa_warning: $(FIRMWARE_FORMAT)
- $(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)
- $(info LUFA MASS STORAGE Bootloader selected)
- $(info DO NOT USE THIS BOOTLOADER IN NEW PROJECTS!)
- $(info It is extremely prone to bricking, and is only included to support existing boards.)
- $(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)
-endif
-ifdef BOOTLOADER_SIZE
- OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE))
-endif
-
-ifeq ($(strip $(BOOTLOADER)), stm32-dfu)
- OPT_DEFS += -DBOOTLOADER_STM32_DFU
-
- # Options to pass to dfu-util when flashing
- DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave
- DFU_SUFFIX_ARGS ?= -v 0483 -p DF11
-endif
-ifeq ($(strip $(BOOTLOADER)), apm32-dfu)
- OPT_DEFS += -DBOOTLOADER_APM32_DFU
-
- # Options to pass to dfu-util when flashing
- DFU_ARGS ?= -d 314B:0106 -a 0 -s 0x08000000:leave
- DFU_SUFFIX_ARGS ?= -v 314B -p 0106
-endif
-ifeq ($(strip $(BOOTLOADER)), kiibohd)
- OPT_DEFS += -DBOOTLOADER_KIIBOHD
- ifeq ($(strip $(MCU_ORIG)), MK20DX128)
- MCU_LDSCRIPT = MK20DX128BLDR4
- endif
- ifeq ($(strip $(MCU_ORIG)), MK20DX256)
- MCU_LDSCRIPT = MK20DX256BLDR8
- endif
-
- # Options to pass to dfu-util when flashing
- DFU_ARGS = -d 1C11:B007
- DFU_SUFFIX_ARGS = -v 1C11 -p B007
-endif
-ifeq ($(strip $(BOOTLOADER)), stm32duino)
- OPT_DEFS += -DBOOTLOADER_STM32DUINO
- MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
- BOARD = STM32_F103_STM32DUINO
- # STM32F103 does NOT have an USB bootloader in ROM (only serial), so setting anything here does not make much sense
- STM32_BOOTLOADER_ADDRESS = 0x80000000
-
- # Options to pass to dfu-util when flashing
- DFU_ARGS = -d 1EAF:0003 -a 2 -R
- DFU_SUFFIX_ARGS = -v 1EAF -p 0003
-endif
-ifeq ($(strip $(BOOTLOADER)), tinyuf2)
- OPT_DEFS += -DBOOTLOADER_TINYUF2
-endif
diff --git a/build_full_test.mk b/build_full_test.mk
index f8030cb0600..4cd1ac61b53 100644
--- a/build_full_test.mk
+++ b/build_full_test.mk
@@ -13,21 +13,24 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-#include $(TMK_PATH)/protocol.mk
+$(TEST)_INC := \
+ tests\test_common\common_config.h
-TEST_PATH=tests/$(TEST)
-
-$(TEST)_SRC= \
- $(TEST_PATH)/keymap.c \
+$(TEST)_SRC := \
$(TMK_COMMON_SRC) \
$(QUANTUM_SRC) \
$(SRC) \
+ tests/test_common/keymap.c \
tests/test_common/matrix.c \
tests/test_common/test_driver.cpp \
tests/test_common/keyboard_report_util.cpp \
- tests/test_common/test_fixture.cpp
-$(TEST)_SRC += $(patsubst $(ROOTDIR)/%,%,$(wildcard $(TEST_PATH)/*.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 := $(TMK_COMMON_DEFS) $(OPT_DEFS)
+
+$(TEST)_CONFIG := $(TEST_PATH)/config.h
-$(TEST)_DEFS=$(TMK_COMMON_DEFS) $(OPT_DEFS)
-$(TEST)_CONFIG=$(TEST_PATH)/config.h
-VPATH+=$(TOP_DIR)/tests/test_common
+VPATH += $(TOP_DIR)/tests/test_common
\ No newline at end of file
diff --git a/build_keyboard.mk b/build_keyboard.mk
index 37fa6852f87..c12aa0fce00 100644
--- a/build_keyboard.mk
+++ b/build_keyboard.mk
@@ -10,7 +10,8 @@ endif
.DEFAULT_GOAL := all
-include common.mk
+include paths.mk
+include $(BUILDDEFS_PATH)/message.mk
# Set the qmk cli to use
QMK_BIN ?= qmk
@@ -32,20 +33,6 @@ endif
# this an empty or blank macro!
KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
-# For split boards we need to set a master half.
-MASTER ?= left
-ifdef master
- MASTER = $(master)
-endif
-
-ifeq ($(MASTER),right)
- OPT_DEFS += -DMASTER_IS_ON_RIGHT
-else
- ifneq ($(MASTER),left)
-$(error MASTER does not have a valid value(left/right))
- endif
-endif
-
ifdef SKIP_VERSION
OPT_DEFS += -DSKIP_VERSION
endif
@@ -115,6 +102,7 @@ include $(INFO_RULES_MK)
# Check for keymap.json first, so we can regenerate keymap.c
include 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_5)/keymap.c)","")
@@ -177,7 +165,7 @@ ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes)
include platforms/chibios/boards/QMK_PROTON_C/convert_to_proton_c.mk
endif
-include quantum/mcu_selection.mk
+include $(BUILDDEFS_PATH)/mcu_selection.mk
# Find all the C source files to be compiled in subfolders.
KEYBOARD_SRC :=
@@ -345,6 +333,7 @@ ifeq ("$(USER_NAME)","")
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
@@ -354,7 +343,24 @@ ifneq ("$(wildcard $(USER_PATH)/post_config.h)","")
endif
# Disable features that a keyboard doesn't support
--include disable_features.mk
+-include $(BUILDDEFS_PATH)/disable_features.mk
+
+# 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
@@ -380,9 +386,10 @@ VPATH += $(KEYBOARD_PATHS)
VPATH += $(COMMON_VPATH)
include common_features.mk
+include $(BUILDDEFS_PATH)/generic_features.mk
include $(TMK_PATH)/protocol.mk
-include $(TMK_PATH)/common.mk
-include bootloader.mk
+include $(PLATFORM_PATH)/common.mk
+include $(BUILDDEFS_PATH)/bootloader.mk
SRC += $(patsubst %.c,%.clib,$(LIB_SRC))
SRC += $(patsubst %.c,%.clib,$(QUANTUM_LIB_SRC))
@@ -397,39 +404,34 @@ ifneq ($(REQUIRE_PLATFORM_KEY),)
endif
endif
-include $(TMK_PATH)/$(PLATFORM_KEY).mk
+include $(PLATFORM_PATH)/$(PLATFORM_KEY)/platform.mk
+-include $(PLATFORM_PATH)/$(PLATFORM_KEY)/flash.mk
+
ifneq ($(strip $(PROTOCOL)),)
include $(TMK_PATH)/protocol/$(strip $(shell echo $(PROTOCOL) | tr '[:upper:]' '[:lower:]')).mk
else
include $(TMK_PATH)/protocol/$(PLATFORM_KEY).mk
endif
--include $(TOP_DIR)/platforms/$(PLATFORM_KEY)/flash.mk
# TODO: remove this bodge?
PROJECT_DEFS := $(OPT_DEFS)
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS)
PROJECT_CONFIG := $(CONFIG_H)
-ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
- VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer
- VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer
- include $(VISUALIZER_PATH)/visualizer.mk
-endif
-
CONFIG_H += $(POST_CONFIG_H)
ALL_CONFIGS := $(PROJECT_CONFIG) $(CONFIG_H)
OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
$(KEYMAP_OUTPUT)_SRC := $(SRC)
-$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \
+$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) \
-DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(QMK_KEYBOARD_H)\" \
-DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \
-DQMK_SUBPROJECT -DQMK_SUBPROJECT_H -DQMK_SUBPROJECT_CONFIG_H
$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
-$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC)
-$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS)
-$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC)
+$(KEYBOARD_OUTPUT)_SRC := $(PLATFORM_SRC)
+$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS)
+$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC)
$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
# Default target.
@@ -445,7 +447,7 @@ check-size: build
check-md5: build
objs-size: build
-include show_options.mk
+include $(BUILDDEFS_PATH)/show_options.mk
include $(TMK_PATH)/rules.mk
# Ensure we have generated files available for each of the objects
diff --git a/build_test.mk b/build_test.mk
index 037577bf904..136a0455f01 100644
--- a/build_test.mk
+++ b/build_test.mk
@@ -4,7 +4,8 @@ endif
.DEFAULT_GOAL := all
-include common.mk
+include paths.mk
+include $(BUILDDEFS_PATH)/message.mk
TARGET=test/$(TEST)
@@ -15,14 +16,14 @@ TEST_OBJ = $(BUILD_DIR)/test_obj
OUTPUTS := $(TEST_OBJ)/$(TEST) $(GTEST_OUTPUT)
GTEST_INC := \
- $(LIB_PATH)/googletest/googletest/include\
- $(LIB_PATH)/googletest/googlemock/include\
+ $(LIB_PATH)/googletest/googletest/include \
+ $(LIB_PATH)/googletest/googlemock/include
-GTEST_INTERNAL_INC :=\
- $(LIB_PATH)/googletest/googletest\
+GTEST_INTERNAL_INC := \
+ $(LIB_PATH)/googletest/googletest \
$(LIB_PATH)/googletest/googlemock
-$(GTEST_OUTPUT)_SRC :=\
+$(GTEST_OUTPUT)_SRC := \
googletest/src/gtest-all.cc\
googlemock/src/gmock-all.cc
@@ -32,9 +33,9 @@ $(GTEST_OUTPUT)_INC := $(GTEST_INC) $(GTEST_INTERNAL_INC)
LDFLAGS += -lstdc++ -lpthread -shared-libgcc
CREATE_MAP := no
-VPATH +=\
- $(LIB_PATH)/googletest\
- $(LIB_PATH)/googlemock\
+VPATH += \
+ $(LIB_PATH)/googletest \
+ $(LIB_PATH)/googlemock \
$(LIB_PATH)/printf
all: elf
@@ -48,15 +49,18 @@ CONSOLE_ENABLE = yes
endif
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
-include tests/$(TEST)/rules.mk
+include tests/test_common/build.mk
+include $(TEST_PATH)/test.mk
endif
include common_features.mk
-include $(TMK_PATH)/common.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)/sequencer/tests/rules.mk
-include $(QUANTUM_PATH)/serial_link/tests/rules.mk
-include $(TMK_PATH)/common/test/rules.mk
+include $(PLATFORM_PATH)/test/rules.mk
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
include build_full_test.mk
endif
@@ -71,7 +75,7 @@ $(TEST_OBJ)/$(TEST)_INC := $($(TEST)_INC) $(VPATH) $(GTEST_INC)
$(TEST_OBJ)/$(TEST)_DEFS := $($(TEST)_DEFS)
$(TEST_OBJ)/$(TEST)_CONFIG := $($(TEST)_CONFIG)
-include $(TMK_PATH)/native.mk
+include $(PLATFORM_PATH)/$(PLATFORM_KEY)/platform.mk
include $(TMK_PATH)/rules.mk
diff --git a/builddefs/bootloader.mk b/builddefs/bootloader.mk
new file mode 100644
index 00000000000..ccb92392d90
--- /dev/null
+++ b/builddefs/bootloader.mk
@@ -0,0 +1,163 @@
+# Copyright 2017 Jack Humbert
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+# If it's possible that multiple bootloaders can be used for one project,
+# you can leave this unset, and the correct size will be selected
+# automatically.
+#
+# Sets the bootloader defined in the keyboard's/keymap's rules.mk
+# Current options:
+#
+# AVR:
+# halfkay PJRC Teensy
+# caterina Pro Micro (Sparkfun/generic)
+# atmel-dfu Atmel factory DFU
+# lufa-dfu LUFA DFU
+# qmk-dfu QMK DFU (LUFA + blinkenlight)
+# qmk-hid QMK HID (LUFA + blinkenlight)
+# bootloadhid HIDBootFlash compatible (ATmega32A)
+# usbasploader USBaspLoader (ATmega328P)
+# ARM:
+# kiibohd Input:Club Kiibohd bootloader (only used on their boards)
+# stm32duino STM32Duino (STM32F103x8)
+# stm32-dfu STM32 USB DFU in ROM
+# apm32-dfu APM32 USB DFU in ROM
+# RISC-V:
+# gd32v-dfu GD32V USB DFU in ROM
+#
+# BOOTLOADER_SIZE can still be defined manually, but it's recommended
+# you add any possible configuration to this list
+
+ifeq ($(strip $(BOOTLOADER)), atmel-dfu)
+ OPT_DEFS += -DBOOTLOADER_ATMEL_DFU
+ OPT_DEFS += -DBOOTLOADER_DFU
+ ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
+ BOOTLOADER_SIZE = 4096
+ endif
+ ifneq (,$(filter $(MCU), at90usb1286 at90usb1287))
+ BOOTLOADER_SIZE = 8192
+ endif
+endif
+ifeq ($(strip $(BOOTLOADER)), lufa-dfu)
+ OPT_DEFS += -DBOOTLOADER_LUFA_DFU
+ OPT_DEFS += -DBOOTLOADER_DFU
+ ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
+ BOOTLOADER_SIZE ?= 4096
+ endif
+ ifneq (,$(filter $(MCU), at90usb1286 at90usb1287))
+ BOOTLOADER_SIZE ?= 8192
+ endif
+endif
+ifeq ($(strip $(BOOTLOADER)), qmk-dfu)
+ OPT_DEFS += -DBOOTLOADER_QMK_DFU
+ OPT_DEFS += -DBOOTLOADER_DFU
+ ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
+ BOOTLOADER_SIZE ?= 4096
+ endif
+ ifneq (,$(filter $(MCU), at90usb1286 at90usb1287))
+ BOOTLOADER_SIZE ?= 8192
+ endif
+endif
+ifeq ($(strip $(BOOTLOADER)), qmk-hid)
+ OPT_DEFS += -DBOOTLOADER_QMK_HID
+ OPT_DEFS += -DBOOTLOADER_HID
+ BOOTLOADER_SIZE ?= 4096
+endif
+ifeq ($(strip $(BOOTLOADER)), halfkay)
+ OPT_DEFS += -DBOOTLOADER_HALFKAY
+ ifeq ($(strip $(MCU)), atmega32u4)
+ BOOTLOADER_SIZE = 512
+ endif
+ ifeq ($(strip $(MCU)), at90usb1286)
+ BOOTLOADER_SIZE = 1024
+ endif
+endif
+ifeq ($(strip $(BOOTLOADER)), caterina)
+ OPT_DEFS += -DBOOTLOADER_CATERINA
+ BOOTLOADER_SIZE = 4096
+endif
+ifneq (,$(filter $(BOOTLOADER), bootloadhid bootloadHID))
+ OPT_DEFS += -DBOOTLOADER_BOOTLOADHID
+ BOOTLOADER_SIZE = 4096
+endif
+ifneq (,$(filter $(BOOTLOADER), usbasploader USBasp))
+ OPT_DEFS += -DBOOTLOADER_USBASP
+ BOOTLOADER_SIZE = 4096
+endif
+ifeq ($(strip $(BOOTLOADER)), lufa-ms)
+ OPT_DEFS += -DBOOTLOADER_MS
+ BOOTLOADER_SIZE ?= 8192
+ FIRMWARE_FORMAT = bin
+cpfirmware: lufa_warning
+.INTERMEDIATE: lufa_warning
+lufa_warning: $(FIRMWARE_FORMAT)
+ $(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)
+ $(info LUFA MASS STORAGE Bootloader selected)
+ $(info DO NOT USE THIS BOOTLOADER IN NEW PROJECTS!)
+ $(info It is extremely prone to bricking, and is only included to support existing boards.)
+ $(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)
+endif
+ifdef BOOTLOADER_SIZE
+ OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE))
+endif
+
+ifeq ($(strip $(BOOTLOADER)), stm32-dfu)
+ OPT_DEFS += -DBOOTLOADER_STM32_DFU
+
+ # Options to pass to dfu-util when flashing
+ DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave
+ DFU_SUFFIX_ARGS ?= -v 0483 -p DF11
+endif
+ifeq ($(strip $(BOOTLOADER)), apm32-dfu)
+ OPT_DEFS += -DBOOTLOADER_APM32_DFU
+
+ # Options to pass to dfu-util when flashing
+ DFU_ARGS ?= -d 314B:0106 -a 0 -s 0x08000000:leave
+ DFU_SUFFIX_ARGS ?= -v 314B -p 0106
+endif
+ifeq ($(strip $(BOOTLOADER)), gd32v-dfu)
+ OPT_DEFS += -DBOOTLOADER_GD32V_DFU
+
+ # Options to pass to dfu-util when flashing
+ DFU_ARGS ?= -d 28E9:0189 -a 0 -s 0x08000000:leave
+ DFU_SUFFIX_ARGS ?= -v 28E9 -p 0189
+endif
+ifeq ($(strip $(BOOTLOADER)), kiibohd)
+ OPT_DEFS += -DBOOTLOADER_KIIBOHD
+ ifeq ($(strip $(MCU_ORIG)), MK20DX128)
+ MCU_LDSCRIPT = MK20DX128BLDR4
+ endif
+ ifeq ($(strip $(MCU_ORIG)), MK20DX256)
+ MCU_LDSCRIPT = MK20DX256BLDR8
+ endif
+
+ # Options to pass to dfu-util when flashing
+ DFU_ARGS = -d 1C11:B007
+ DFU_SUFFIX_ARGS = -v 1C11 -p B007
+endif
+ifeq ($(strip $(BOOTLOADER)), stm32duino)
+ OPT_DEFS += -DBOOTLOADER_STM32DUINO
+ MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
+ BOARD = STM32_F103_STM32DUINO
+ # STM32F103 does NOT have an USB bootloader in ROM (only serial), so setting anything here does not make much sense
+ STM32_BOOTLOADER_ADDRESS = 0x80000000
+
+ # Options to pass to dfu-util when flashing
+ DFU_ARGS = -d 1EAF:0003 -a 2 -R
+ DFU_SUFFIX_ARGS = -v 1EAF -p 0003
+endif
+ifeq ($(strip $(BOOTLOADER)), tinyuf2)
+ OPT_DEFS += -DBOOTLOADER_TINYUF2
+endif
diff --git a/builddefs/disable_features.mk b/builddefs/disable_features.mk
new file mode 100644
index 00000000000..090a9b5a112
--- /dev/null
+++ b/builddefs/disable_features.mk
@@ -0,0 +1,28 @@
+# 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 += PRINTING
+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/builddefs/generic_features.mk b/builddefs/generic_features.mk
new file mode 100644
index 00000000000..e4151eb2179
--- /dev/null
+++ b/builddefs/generic_features.mk
@@ -0,0 +1,52 @@
+# 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 = \
+ COMBO \
+ COMMAND \
+ DEFERRED_EXEC \
+ DIGITIZER \
+ DIP_SWITCH \
+ DYNAMIC_KEYMAP \
+ DYNAMIC_MACRO \
+ ENCODER \
+ GRAVE_ESC \
+ HAPTIC \
+ KEY_LOCK \
+ KEY_OVERRIDE \
+ LEADER \
+ PROGRAMMABLE_BUTTON \
+ SPACE_CADET \
+ SWAP_HANDS \
+ TAP_DANCE \
+ VELOCIKEY \
+ WPM \
+ DYNAMIC_TAPPING_TERM \
+
+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/builddefs/mcu_selection.mk b/builddefs/mcu_selection.mk
new file mode 100644
index 00000000000..46d34aabe42
--- /dev/null
+++ b/builddefs/mcu_selection.mk
@@ -0,0 +1,697 @@
+MCU_ORIG := $(MCU)
+
+ifneq ($(findstring MKL26Z64, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m0plus
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 6
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = KINETIS
+ MCU_SERIES = KL2x
+
+ # Linker script to use
+ # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= MKL26Z64
+
+ # Startup code to use
+ # - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= kl2x
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= PJRC_TEENSY_LC
+endif
+
+ifneq ($(findstring MK20DX128, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m4
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = KINETIS
+ MCU_SERIES = K20x
+
+ # Linker script to use
+ # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= MK20DX128
+
+ # Startup code to use
+ # - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= k20x5
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= PJRC_TEENSY_3
+endif
+
+ifneq ($(findstring MK20DX256, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m4
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = KINETIS
+ MCU_SERIES = K20x
+
+ # Linker script to use
+ # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= MK20DX256
+
+ # Startup code to use
+ # - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= k20x7
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= PJRC_TEENSY_3_1
+endif
+
+ifneq ($(findstring MK66FX1M0, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m4
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = KINETIS
+ MCU_SERIES = MK66F18
+
+ # Linker script to use
+ # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= MK66FX1M0
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= MK66F18
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= PJRC_TEENSY_3_6
+endif
+
+ifneq ($(findstring STM32F042, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m0
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 6
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = STM32
+ MCU_SERIES = STM32F0xx
+
+ # Linker script to use
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= STM32F042x6
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= stm32f0xx
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= GENERIC_STM32_F042X6
+
+ USE_FPU ?= no
+
+ # UF2 settings
+ UF2_FAMILY ?= STM32F0
+
+ # Stack sizes: Since this chip has limited RAM capacity, the stack area needs to be reduced.
+ # This ensures that the EEPROM page buffer fits into RAM
+ USE_PROCESS_STACKSIZE = 0x600
+ USE_EXCEPTIONS_STACKSIZE = 0x300
+endif
+
+ifneq ($(findstring STM32F072, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m0
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 6
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = STM32
+ MCU_SERIES = STM32F0xx
+
+ # Linker script to use
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= STM32F072xB
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= stm32f0xx
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= GENERIC_STM32_F072XB
+
+ USE_FPU ?= no
+
+ # UF2 settings
+ UF2_FAMILY ?= STM32F0
+endif
+
+ifneq ($(findstring STM32F103, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m3
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = STM32
+ MCU_SERIES = STM32F1xx
+
+ # Linker script to use
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= STM32F103x8
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= stm32f1xx
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= GENERIC_STM32_F103
+
+ USE_FPU ?= no
+
+ # UF2 settings
+ UF2_FAMILY ?= STM32F1
+endif
+
+ifneq ($(findstring STM32F303, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m4
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = STM32
+ MCU_SERIES = STM32F3xx
+
+ # Linker script to use
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= STM32F303xC
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= stm32f3xx
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= GENERIC_STM32_F303XC
+
+ USE_FPU ?= yes
+
+ # UF2 settings
+ UF2_FAMILY ?= STM32F3
+endif
+
+ifneq ($(findstring STM32F401, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m4
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = STM32
+ MCU_SERIES = STM32F4xx
+
+ # Linker script to use
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ ifeq ($(strip $(BOOTLOADER)), tinyuf2)
+ MCU_LDSCRIPT ?= STM32F401xC_tinyuf2
+ FIRMWARE_FORMAT ?= uf2
+ else
+ MCU_LDSCRIPT ?= STM32F401xC
+ endif
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= stm32f4xx
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= BLACKPILL_STM32_F401
+
+ USE_FPU ?= yes
+
+ # UF2 settings
+ UF2_FAMILY ?= STM32F4
+endif
+
+ifneq ($(findstring STM32F405, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m4
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = STM32
+ MCU_SERIES = STM32F4xx
+
+ # Linker script to use
+ # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= STM32F405xG
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= stm32f4xx
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= GENERIC_STM32_F405XG
+
+ USE_FPU ?= yes
+
+ # UF2 settings
+ UF2_FAMILY ?= STM32F4
+endif
+
+ifneq ($(findstring STM32F407, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m4
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = STM32
+ MCU_SERIES = STM32F4xx
+
+ # Linker script to use
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= STM32F407xE
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= stm32f4xx
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= GENERIC_STM32_F407XE
+
+ USE_FPU ?= yes
+
+ # UF2 settings
+ UF2_FAMILY ?= STM32F4
+endif
+
+ifneq ($(findstring STM32F411, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m4
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = STM32
+ MCU_SERIES = STM32F4xx
+
+ # Linker script to use
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ ifeq ($(strip $(BOOTLOADER)), tinyuf2)
+ MCU_LDSCRIPT ?= STM32F411xE_tinyuf2
+ FIRMWARE_FORMAT ?= uf2
+ else
+ MCU_LDSCRIPT ?= STM32F411xE
+ endif
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= stm32f4xx
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= BLACKPILL_STM32_F411
+
+ USE_FPU ?= yes
+
+ # UF2 settings
+ UF2_FAMILY ?= STM32F4
+endif
+
+ifneq ($(findstring STM32F446, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m4
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = STM32
+ MCU_SERIES = STM32F4xx
+
+ # Linker script to use
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= STM32F446xE
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= stm32f4xx
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= GENERIC_STM32_F446XE
+
+ USE_FPU ?= yes
+endif
+
+ifneq ($(findstring STM32G431, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m4
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = STM32
+ MCU_SERIES = STM32G4xx
+
+ # Linker script to use
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= STM32G431xB
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= stm32g4xx
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= GENERIC_STM32_G431XB
+
+ USE_FPU ?= yes
+
+ # UF2 settings
+ UF2_FAMILY ?= STM32G4
+endif
+
+ifneq ($(findstring STM32G474, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m4
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = STM32
+ MCU_SERIES = STM32G4xx
+
+ # Linker script to use
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= STM32G474xE
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= stm32g4xx
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= GENERIC_STM32_G474XE
+
+ USE_FPU ?= yes
+
+ # UF2 settings
+ UF2_FAMILY ?= STM32G4
+endif
+
+ifneq (,$(filter $(MCU),STM32L433 STM32L443))
+ # Cortex version
+ MCU = cortex-m4
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = STM32
+ MCU_SERIES = STM32L4xx
+
+ # Linker script to use
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= STM32L432xC
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= stm32l4xx
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= GENERIC_STM32_L433XC
+
+ PLATFORM_NAME ?= platform_l432
+
+ USE_FPU ?= yes
+
+ # UF2 settings
+ UF2_FAMILY ?= STM32L4
+endif
+
+ifneq (,$(filter $(MCU),STM32L412 STM32L422))
+ # Cortex version
+ MCU = cortex-m4
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = STM32
+ MCU_SERIES = STM32L4xx
+
+ # Linker script to use
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= STM32L412xB
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= stm32l4xx
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= GENERIC_STM32_L412XB
+
+ PLATFORM_NAME ?= platform_l432
+
+ USE_FPU ?= yes
+
+ # UF2 settings
+ UF2_FAMILY ?= STM32L4
+endif
+
+ifneq ($(findstring WB32F3G71, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m3
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = WB32
+ MCU_SERIES = WB32F3G71xx
+
+ # Linker script to use
+ # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= WB32F3G71x9
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= wb32f3g71xx
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= GENERIC_WB32_F3G71XX
+
+ USE_FPU ?= no
+endif
+
+ifneq ($(findstring GD32VF103, $(MCU)),)
+ # RISC-V
+ MCU = risc-v
+
+ # RISC-V extensions and abi configuration
+ MCU_ARCH = rv32imac
+ MCU_ABI = ilp32
+ MCU_CMODEL = medlow
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = GD32V
+ MCU_SERIES = GD32VF103
+
+ # Linker script to use
+ # - it should exist either in /os/common/startup/RISCV-ECLIC/compilers/GCC/ld/
+ # or /ld/
+ MCU_LDSCRIPT ?= GD32VF103xB
+
+ # Startup code to use
+ # - it should exist in /os/common/startup/RISCV-ECLIC/compilers/GCC/mk/
+ MCU_STARTUP ?= gd32vf103
+
+ # Board: it should exist either in /os/hal/boards/,
+ # /boards/, or drivers/boards/
+ BOARD ?= SIPEED_LONGAN_NANO
+
+ USE_FPU ?= no
+endif
+
+ifneq (,$(filter $(MCU),at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647 at90usb1286 at90usb1287))
+ PROTOCOL = LUFA
+
+ # Processor frequency.
+ # This will define a symbol, F_CPU, in all source code files equal to the
+ # processor frequency in Hz. You can then use this symbol in your source code to
+ # calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+ # automatically to create a 32-bit value in your source code.
+ #
+ # This will be an integer division of F_USB below, as it is sourced by
+ # F_USB after it has run through any CPU prescalers. Note that this value
+ # does not *change* the processor frequency - it should merely be updated to
+ # reflect the processor speed set externally so that the code can use accurate
+ # software delays.
+ F_CPU ?= 16000000
+
+ # LUFA specific
+ #
+ # Target architecture (see library "Board Types" documentation).
+ ARCH = AVR8
+
+ # Input clock frequency.
+ # This will define a symbol, F_USB, in all source code files equal to the
+ # input clock frequency (before any prescaling is performed) in Hz. This value may
+ # differ from F_CPU if prescaling is used on the latter, and is required as the
+ # raw input clock is fed directly to the PLL sections of the AVR for high speed
+ # clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+ # at the end, this will be done automatically to create a 32-bit value in your
+ # source code.
+ #
+ # If no clock division is performed on the input clock inside the AVR (via the
+ # CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+ F_USB ?= $(F_CPU)
+
+ # Interrupt driven control endpoint task
+ ifeq (,$(filter $(NO_INTERRUPT_CONTROL_ENDPOINT),yes))
+ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+ endif
+ ifneq (,$(filter $(MCU),at90usb162 atmega16u2 atmega32u2))
+ NO_I2C = yes
+ endif
+endif
+
+ifneq (,$(filter $(MCU),atmega32a))
+ # MCU name for avrdude
+ AVRDUDE_MCU = m32
+
+ PROTOCOL = VUSB
+
+ # Processor frequency.
+ # This will define a symbol, F_CPU, in all source code files equal to the
+ # processor frequency in Hz. You can then use this symbol in your source code to
+ # calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+ # automatically to create a 32-bit value in your source code.
+ F_CPU ?= 12000000
+endif
+
+ifneq (,$(filter $(MCU),atmega328p))
+ # MCU name for avrdude
+ AVRDUDE_MCU = m328p
+
+ PROTOCOL = VUSB
+
+ # Processor frequency.
+ # This will define a symbol, F_CPU, in all source code files equal to the
+ # processor frequency in Hz. You can then use this symbol in your source code to
+ # calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+ # automatically to create a 32-bit value in your source code.
+ F_CPU ?= 16000000
+endif
+
+ifneq (,$(filter $(MCU),atmega328))
+ # MCU name for avrdude
+ AVRDUDE_MCU = m328
+
+ PROTOCOL = VUSB
+
+ # Processor frequency.
+ # This will define a symbol, F_CPU, in all source code files equal to the
+ # processor frequency in Hz. You can then use this symbol in your source code to
+ # calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+ # automatically to create a 32-bit value in your source code.
+ F_CPU ?= 16000000
+endif
+
+ifneq (,$(filter $(MCU),attiny85))
+ PROTOCOL = VUSB
+
+ # Processor frequency.
+ # This will define a symbol, F_CPU, in all source code files equal to the
+ # processor frequency in Hz. You can then use this symbol in your source code to
+ # calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+ # automatically to create a 32-bit value in your source code.
+ F_CPU ?= 16500000
+endif
diff --git a/message.mk b/builddefs/message.mk
similarity index 100%
rename from message.mk
rename to builddefs/message.mk
diff --git a/builddefs/show_options.mk b/builddefs/show_options.mk
new file mode 100644
index 00000000000..2820332d56b
--- /dev/null
+++ b/builddefs/show_options.mk
@@ -0,0 +1,148 @@
+BUILD_OPTION_NAMES = \
+ BOOTMAGIC_ENABLE \
+ MOUSEKEY_ENABLE \
+ EXTRAKEY_ENABLE \
+ CONSOLE_ENABLE \
+ COMMAND_ENABLE \
+ NKRO_ENABLE \
+ TERMINAL_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_CUSTOM_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 \
+ PRINTING_ENABLE \
+ STENO_ENABLE \
+ 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_ENABLE_CUSTOM \
+ GERMAN_ENABLE \
+ HAPTIC_ENABLE \
+ HHKB_RN42_ENABLE \
+ ISSI_ENABLE \
+ KEYLOGGER_ENABLE \
+ LCD_BACKLIGHT_ENABLE \
+ MACROS_ENABLED \
+ PS2_MOUSE_ENABLE \
+ 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
+
+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/common.mk b/common.mk
deleted file mode 100644
index 8acea39376e..00000000000
--- a/common.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-include message.mk
-
-# Directory common source files exist
-TOP_DIR = .
-TMK_DIR = tmk_core
-TMK_PATH = $(TMK_DIR)
-LIB_PATH = lib
-
-QUANTUM_DIR = quantum
-QUANTUM_PATH = $(QUANTUM_DIR)
-
-DRIVER_DIR = drivers
-DRIVER_PATH = $(DRIVER_DIR)
-
-PLATFORM_DIR = platforms
-PLATFORM_PATH = $(PLATFORM_DIR)
-
-BUILD_DIR := .build
-
-COMMON_VPATH := $(TOP_DIR)
-COMMON_VPATH += $(TMK_PATH)
-COMMON_VPATH += $(QUANTUM_PATH)
-COMMON_VPATH += $(QUANTUM_PATH)/keymap_extras
-COMMON_VPATH += $(QUANTUM_PATH)/audio
-COMMON_VPATH += $(QUANTUM_PATH)/process_keycode
-COMMON_VPATH += $(QUANTUM_PATH)/api
-COMMON_VPATH += $(QUANTUM_PATH)/sequencer
-COMMON_VPATH += $(DRIVER_PATH)
diff --git a/common_features.mk b/common_features.mk
index f4f79000b39..8c593024f0d 100644
--- a/common_features.mk
+++ b/common_features.mk
@@ -13,8 +13,6 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-SERIAL_PATH := $(QUANTUM_PATH)/serial_link
-
QUANTUM_SRC += \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/send_string.c \
@@ -29,13 +27,16 @@ QUANTUM_SRC += \
$(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 $(TMK_PATH)/common/$(PLATFORM_KEY)/printf.mk)","")
+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)
@@ -45,19 +46,6 @@ else ifeq ($(strip $(DEBUG_MATRIX_SCAN_RATE_ENABLE)), api)
OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE
endif
-ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
- OPT_DEFS += -DAPI_SYSEX_ENABLE
- OPT_DEFS += -DAPI_ENABLE
- MIDI_ENABLE=yes
- SRC += $(QUANTUM_DIR)/api/api_sysex.c
- SRC += $(QUANTUM_DIR)/api.c
-endif
-
-ifeq ($(strip $(COMMAND_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/command.c
- OPT_DEFS += -DCOMMAND_ENABLE
-endif
-
AUDIO_ENABLE ?= no
ifeq ($(strip $(AUDIO_ENABLE)), yes)
ifeq ($(PLATFORM),CHIBIOS)
@@ -82,7 +70,7 @@ ifeq ($(strip $(AUDIO_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 += $(QUANTUM_DIR)/audio/driver_$(PLATFORM_KEY)_$(strip $(AUDIO_DRIVER)).c
+ 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
@@ -121,10 +109,43 @@ ifeq ($(strip $(MOUSEKEY_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/mousekey.c
endif
+VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick cirque_pinnacle_i2c cirque_pinnacle_spi pmw3360 pimoroni_trackball custom
+POINTING_DEVICE_DRIVER ?= custom
ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DPOINTING_DEVICE_ENABLE
- MOUSE_ENABLE := yes
- SRC += $(QUANTUM_DIR)/pointing_device.c
+ ifeq ($(filter $(POINTING_DEVICE_DRIVER),$(VALID_POINTING_DEVICE_DRIVER_TYPES)),)
+ $(error POINTING_DEVICE_DRIVER="$(POINTING_DEVICE_DRIVER)" is not a valid pointing device type)
+ else
+ OPT_DEFS += -DPOINTING_DEVICE_ENABLE
+ MOUSE_ENABLE := yes
+ SRC += $(QUANTUM_DIR)/pointing_device.c
+ SRC += $(QUANTUM_DIR)/pointing_device_drivers.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
+ 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
+ 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 ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pmw3360)
+ OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE
+ QUANTUM_LIB_SRC += spi_master.c
+ endif
+ endif
endif
VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi
@@ -156,37 +177,18 @@ else
ifeq ($(PLATFORM),AVR)
# Automatically provided by avr-libc, nothing required
else ifeq ($(PLATFORM),CHIBIOS)
- ifeq ($(MCU_SERIES), STM32F3xx)
- SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
- SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
- OPT_DEFS += -DEEPROM_EMU_STM32F303xC
- OPT_DEFS += -DSTM32_EEPROM_ENABLE
- else ifeq ($(MCU_SERIES), STM32F1xx)
- SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
- SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
- OPT_DEFS += -DEEPROM_EMU_STM32F103xB
- OPT_DEFS += -DSTM32_EEPROM_ENABLE
- else ifeq ($(MCU_SERIES)_$(MCU_LDSCRIPT), STM32F0xx_STM32F072xB)
- SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
- SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
- OPT_DEFS += -DEEPROM_EMU_STM32F072xB
- OPT_DEFS += -DSTM32_EEPROM_ENABLE
- else ifeq ($(MCU_SERIES)_$(MCU_LDSCRIPT), STM32F0xx_STM32F042x6)
-
- # Stack sizes: Since this chip has limited RAM capacity, the stack area needs to be reduced.
- # This ensures that the EEPROM page buffer fits into RAM
- USE_PROCESS_STACKSIZE = 0x600
- USE_EXCEPTIONS_STACKSIZE = 0x300
-
+ ifneq ($(filter STM32F3xx_% STM32F1xx_% %_STM32F401xC %_STM32F401xE %_STM32F405xG %_STM32F411xE %_STM32F072xB %_STM32F042x6 %_GD32VF103xB %_GD32VF103x8, $(MCU_SERIES)_$(MCU_LDSCRIPT)),)
+ OPT_DEFS += -DEEPROM_DRIVER
+ COMMON_VPATH += $(DRIVER_PATH)/eeprom
+ SRC += eeprom_driver.c
SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
- OPT_DEFS += -DEEPROM_EMU_STM32F042x6
- OPT_DEFS += -DSTM32_EEPROM_ENABLE
else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),)
OPT_DEFS += -DEEPROM_DRIVER
COMMON_VPATH += $(DRIVER_PATH)/eeprom
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/eeprom
- SRC += eeprom_driver.c eeprom_stm32_L0_L1.c
+ SRC += eeprom_driver.c
+ SRC += eeprom_stm32_L0_L1.c
else
# This will effectively work the same as "transient" if not supported by the chip
SRC += $(PLATFORM_COMMON_DIR)/eeprom_teensy.c
@@ -265,7 +267,7 @@ endif
endif
RGB_MATRIX_ENABLE ?= no
-VALID_RGB_MATRIX_TYPES := AW20216 IS31FL3731 IS31FL3733 IS31FL3737 IS31FL3741 WS2812 custom
+VALID_RGB_MATRIX_TYPES := AW20216 IS31FL3731 IS31FL3733 IS31FL3737 IS31FL3741 CKLED2001 WS2812 custom
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
ifeq ($(filter $(RGB_MATRIX_DRIVER),$(VALID_RGB_MATRIX_TYPES)),)
@@ -321,6 +323,13 @@ endif
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
@@ -350,17 +359,6 @@ ifeq ($(strip $(PRINTING_ENABLE)), yes)
SRC += $(TMK_DIR)/protocol/serial_uart.c
endif
-ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
- SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c)
- SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
- SERIAL_DEFS += -DSERIAL_LINK_ENABLE
- COMMON_VPATH += $(SERIAL_PATH)
-
- SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
- OPT_DEFS += $(SERIAL_DEFS)
- VAPTH += $(SERIAL_PATH)
-endif
-
VARIABLE_TRACE ?= no
ifneq ($(strip $(VARIABLE_TRACE)),no)
SRC += $(QUANTUM_DIR)/variable_trace.c
@@ -370,8 +368,11 @@ ifneq ($(strip $(VARIABLE_TRACE)),no)
endif
endif
-ifeq ($(strip $(LCD_ENABLE)), yes)
- CIE1931_CURVE := yes
+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
@@ -437,10 +438,6 @@ ifeq ($(strip $(APA102_DRIVER_REQUIRED)), yes)
SRC += apa102.c
endif
-ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
- CIE1931_CURVE := yes
-endif
-
ifeq ($(strip $(CIE1931_CURVE)), yes)
OPT_DEFS += -DUSE_CIE1931_CURVE
LED_TABLES := yes
@@ -456,40 +453,15 @@ ifeq ($(strip $(TERMINAL_ENABLE)), yes)
OPT_DEFS += -DUSER_PRINT
endif
-ifeq ($(strip $(WPM_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/wpm.c
- OPT_DEFS += -DWPM_ENABLE
-endif
-
-ifeq ($(strip $(ENCODER_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/encoder.c
- OPT_DEFS += -DENCODER_ENABLE
-endif
-
-ifeq ($(strip $(VELOCIKEY_ENABLE)), yes)
- OPT_DEFS += -DVELOCIKEY_ENABLE
- SRC += $(QUANTUM_DIR)/velocikey.c
-endif
-
ifeq ($(strip $(VIA_ENABLE)), yes)
DYNAMIC_KEYMAP_ENABLE := yes
RAW_ENABLE := yes
- BOOTMAGIC_ENABLE := lite
+ BOOTMAGIC_ENABLE := yes
SRC += $(QUANTUM_DIR)/via.c
OPT_DEFS += -DVIA_ENABLE
endif
-ifeq ($(strip $(DYNAMIC_KEYMAP_ENABLE)), yes)
- OPT_DEFS += -DDYNAMIC_KEYMAP_ENABLE
- SRC += $(QUANTUM_DIR)/dynamic_keymap.c
-endif
-
-ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)
- OPT_DEFS += -DDIP_SWITCH_ENABLE
- SRC += $(QUANTUM_DIR)/dip_switch.c
-endif
-
-VALID_MAGIC_TYPES := yes lite
+VALID_MAGIC_TYPES := yes
BOOTMAGIC_ENABLE ?= no
ifneq ($(strip $(BOOTMAGIC_ENABLE)), no)
ifeq ($(filter $(BOOTMAGIC_ENABLE),$(VALID_MAGIC_TYPES)),)
@@ -568,23 +540,19 @@ ifeq ($(strip $(CRC_ENABLE)), yes)
SRC += crc.c
endif
-HAPTIC_ENABLE ?= no
-ifneq ($(strip $(HAPTIC_ENABLE)),no)
+ifeq ($(strip $(HAPTIC_ENABLE)),yes)
COMMON_VPATH += $(DRIVER_PATH)/haptic
- OPT_DEFS += -DHAPTIC_ENABLE
- SRC += $(QUANTUM_DIR)/haptic.c
- SRC += $(QUANTUM_DIR)/process_keycode/process_haptic.c
-endif
-ifneq ($(filter DRV2605L, $(HAPTIC_ENABLE)), )
- SRC += DRV2605L.c
- QUANTUM_LIB_SRC += i2c_master.c
- OPT_DEFS += -DDRV2605L
-endif
+ ifneq ($(filter DRV2605L, $(HAPTIC_DRIVER)), )
+ SRC += DRV2605L.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ OPT_DEFS += -DDRV2605L
+ endif
-ifneq ($(filter SOLENOID, $(HAPTIC_ENABLE)), )
- SRC += solenoid.c
- OPT_DEFS += -DSOLENOID_ENABLE
+ ifneq ($(filter SOLENOID, $(HAPTIC_DRIVER)), )
+ SRC += solenoid.c
+ OPT_DEFS += -DSOLENOID_ENABLE
+ endif
endif
ifeq ($(strip $(HD44780_ENABLE)), yes)
@@ -617,8 +585,6 @@ ifeq ($(strip $(ST7565_ENABLE)), yes)
SRC += st7565.c
endif
-include $(DRIVER_PATH)/qwiic/qwiic.mk
-
ifeq ($(strip $(UCIS_ENABLE)), yes)
OPT_DEFS += -DUCIS_ENABLE
UNICODE_COMMON := yes
@@ -641,60 +607,52 @@ ifeq ($(strip $(UNICODE_COMMON)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c
endif
-SPACE_CADET_ENABLE ?= yes
-ifeq ($(strip $(SPACE_CADET_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_space_cadet.c
- OPT_DEFS += -DSPACE_CADET_ENABLE
-endif
-
MAGIC_ENABLE ?= yes
ifeq ($(strip $(MAGIC_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_magic.c
OPT_DEFS += -DMAGIC_KEYCODE_ENABLE
endif
-GRAVE_ESC_ENABLE ?= yes
-ifeq ($(strip $(GRAVE_ESC_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_grave_esc.c
- OPT_DEFS += -DGRAVE_ESC_ENABLE
-endif
-
-ifeq ($(strip $(DYNAMIC_MACRO_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_dynamic_macro.c
- OPT_DEFS += -DDYNAMIC_MACRO_ENABLE
-endif
-
-ifeq ($(strip $(COMBO_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c
- OPT_DEFS += -DCOMBO_ENABLE
+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 $(KEY_OVERRIDE_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_key_override.c
- OPT_DEFS += -DKEY_OVERRIDE_ENABLE
+ifeq ($(strip $(PS2_MOUSE_ENABLE)), yes)
+ PS2_ENABLE := yes
+ SRC += ps2_mouse.c
+ OPT_DEFS += -DPS2_MOUSE_ENABLE
+ OPT_DEFS += -DMOUSE_ENABLE
endif
-ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
- OPT_DEFS += -DTAP_DANCE_ENABLE
+ifeq ($(strip $(PS2_USE_BUSYWAIT)), yes)
+ PS2_ENABLE := yes
+ SRC += ps2_busywait.c
+ SRC += ps2_io_avr.c
+ OPT_DEFS += -DPS2_USE_BUSYWAIT
endif
-ifeq ($(strip $(KEY_LOCK_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_key_lock.c
- OPT_DEFS += -DKEY_LOCK_ENABLE
+ifeq ($(strip $(PS2_USE_INT)), yes)
+ PS2_ENABLE := yes
+ SRC += ps2_interrupt.c
+ SRC += ps2_io.c
+ OPT_DEFS += -DPS2_USE_INT
endif
-ifeq ($(strip $(LEADER_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_leader.c
- OPT_DEFS += -DLEADER_ENABLE
+ifeq ($(strip $(PS2_USE_USART)), yes)
+ PS2_ENABLE := yes
+ SRC += ps2_usart.c
+ SRC += ps2_io.c
+ OPT_DEFS += -DPS2_USE_USART
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
+ifeq ($(strip $(PS2_ENABLE)), yes)
+ COMMON_VPATH += $(DRIVER_PATH)/ps2
+ COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/ps2
+ OPT_DEFS += -DPS2_ENABLE
endif
JOYSTICK_ENABLE ?= no
@@ -717,11 +675,6 @@ ifeq ($(strip $(JOYSTICK_ENABLE)), yes)
endif
endif
-DIGITIZER_ENABLE ?= no
-ifneq ($(strip $(DIGITIZER_ENABLE)), no)
- SRC += $(QUANTUM_DIR)/digitizer.c
-endif
-
USBPD_ENABLE ?= no
VALID_USBPD_DRIVER_TYPES = custom vendor
USBPD_DRIVER ?= vendor
@@ -745,3 +698,27 @@ ifeq ($(strip $(USBPD_ENABLE)), yes)
endif
endif
endif
+
+BLUETOOTH_ENABLE ?= no
+VALID_BLUETOOTH_DRIVER_TYPES := AdafruitBLE RN42 custom
+ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
+ ifeq ($(filter $(strip $(BLUETOOTH_DRIVER)),$(VALID_BLUETOOTH_DRIVER_TYPES)),)
+ $(error "$(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)), AdafruitBLE)
+ OPT_DEFS += -DMODULE_ADAFRUIT_BLE
+ SRC += analog.c
+ SRC += $(DRIVER_PATH)/bluetooth/adafruit_ble.cpp
+ QUANTUM_LIB_SRC += spi_master.c
+ endif
+
+ ifeq ($(strip $(BLUETOOTH_DRIVER)), RN42)
+ OPT_DEFS += -DMODULE_RN42
+ SRC += $(TMK_DIR)/protocol/serial_uart.c
+ endif
+endif
diff --git a/data/mappings/info_config.json b/data/mappings/info_config.json
index 72bb0f4a1ce..3cb64dd3a2f 100644
--- a/data/mappings/info_config.json
+++ b/data/mappings/info_config.json
@@ -68,7 +68,7 @@
"RGBLIGHT_SLEEP": {"info_key": "rgblight.sleep", "value_type": "bool"},
"RGBLIGHT_SPLIT": {"info_key": "rgblight.split", "value_type": "bool"},
"RGBW": {"info_key": "rgblight.rgbw", "value_type": "bool"},
- "PRODUCT": {"info_key": "keyboard_folder", "to_json": false},
+ "PRODUCT": {"info_key": "keyboard_name", "warn_duplicate": false},
"PRODUCT_ID": {"info_key": "usb.pid", "value_type": "hex"},
"VENDOR_ID": {"info_key": "usb.vid", "value_type": "hex"},
"QMK_ESC_OUTPUT": {"info_key": "qmk_lufa_bootloader.esc_output"},
@@ -76,6 +76,7 @@
"QMK_KEYS_PER_SCAN": {"info_key": "qmk.keys_per_scan", "value_type": "int"},
"QMK_LED": {"info_key": "qmk_lufa_bootloader.led"},
"QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"},
+ "SENDSTRING_BELL": {"info_key": "audio.macro_beep", "value_type": "bool"},
"SPLIT_MODS_ENABLE": {"info_key": "split.transport.sync_modifiers", "value_type": "bool"},
"SPLIT_TRANSPORT_MIRROR": {"info_key": "split.transport.sync_matrix_state", "value_type": "bool"},
"SPLIT_USB_DETECT": {"info_key": "split.usb_detect.enabled", "value_type": "bool"},
diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema
index 15f407fce43..308f9b782be 100644
--- a/data/schemas/keyboard.jsonschema
+++ b/data/schemas/keyboard.jsonschema
@@ -13,12 +13,13 @@
},
"processor": {
"type": "string",
- "enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66F18", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L433", "STM32L443", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
+ "enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66FX1M0", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F405", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L433", "STM32L443", "GD32VF103", "WB32F3G71", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
},
"audio": {
"type": "object",
"additionalProperties": false,
"properties": {
+ "macro_beep": {"type": "boolean"},
"pins": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
"voices": {"type": "boolean"}
}
@@ -56,7 +57,7 @@
},
"bootloader": {
"type": "string",
- "enum": ["atmel-dfu", "bootloadhid", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "qmk-hid", "stm32-dfu", "stm32duino", "unknown", "usbasploader", "USBasp", "tinyuf2"],
+ "enum": ["atmel-dfu", "bootloadhid", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "qmk-hid", "stm32-dfu", "stm32duino", "gd32v-dfu", "wb32-dfu", "unknown", "usbasploader", "USBasp", "tinyuf2"],
},
"bootloader_instructions": {
"type": "string",
diff --git a/data/schemas/keymap.jsonschema b/data/schemas/keymap.jsonschema
index a4bdab966b6..faa250a9429 100644
--- a/data/schemas/keymap.jsonschema
+++ b/data/schemas/keymap.jsonschema
@@ -5,6 +5,7 @@
"type": "object",
"properties": {
"author": {"type": "string"},
+ "host_language": {"$ref": "qmk.definitions.v1#/text_identifier"},
"keyboard": {"$ref": "qmk.definitions.v1#/text_identifier"},
"keymap": {"$ref": "qmk.definitions.v1#/text_identifier"},
"layout": {"$ref": "qmk.definitions.v1#/layout_macro"},
@@ -15,10 +16,42 @@
"items": {"type": "string"}
}
},
+ "macros": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": ['beep', 'delay', 'down', 'tap', 'up']
+ },
+ "keycodes": {
+ "type": "array",
+ "items": {
+ "$ref": "qmk.definitions.v1#/text_identifier"
+ }
+ },
+ "duration": {
+ "$ref": "qmk.definitions.v1#/unsigned_int"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
"config": {"$ref": "qmk.keyboard.v1"},
"notes": {
"type": "string",
"description": "asdf"
}
}
-}
\ No newline at end of file
+}
diff --git a/disable_features.mk b/disable_features.mk
deleted file mode 100644
index 84d8316eac9..00000000000
--- a/disable_features.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-# Unconditionally disable features that a keyboard advertises it doesn't support
-
-FEATURE_NAMES :=
-FEATURE_NAMES += ADAFRUIT_BLE
-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 += PRINTING
-FEATURE_NAMES += PS2_MOUSE
-FEATURE_NAMES += RGBLIGHT
-FEATURE_NAMES += RGB_MATRIX
-FEATURE_NAMES += SLEEP_LED
-FEATURE_NAMES += SERIAL_LINK
-FEATURE_NAMES += STENO
-FEATURE_NAMES += SWAP_HANDS
-FEATURE_NAMES += VISUALIZER
-FEATURE_NAMES += WATCHDOG
-FEATURE_NAMES += XT
-
-$(foreach AFEATURE,$(FEATURE_NAMES),\
- $(if $(filter $($(AFEATURE)_SUPPORTED),no),$(eval $(AFEATURE)_ENABLE=no)))
diff --git a/docs/ChangeLog/20211127.md b/docs/ChangeLog/20211127.md
new file mode 100644
index 00000000000..d954bb9f619
--- /dev/null
+++ b/docs/ChangeLog/20211127.md
@@ -0,0 +1,457 @@
+# QMK Breaking Changes - 2021 November 27 Changelog
+
+## 2000 keyboards! :id=qmk-2000th-keyboard
+
+QMK had it's 2000th keyboard submitted during this breaking changes cycle.... and it only _just_ made the cut-off!
+
+```shell
+% qmk list-keyboards | wc -l
+2003
+```
+
+From the whole QMK team, a major thankyou to the community for embracing QMK as your preferred keyboard firmware!
+
+## Notable Features :id=notable-features
+
+### Expanded Pointing Device support ([#14343](https://github.com/qmk/qmk_firmware/pull/14343)) :id=expanded-pointing-device
+
+Pointing device support has been reworked and reimplemented to allow for easier integration of new peripherals.
+
+Usages of `POINTING_DEVICE_ENABLE = yes` in `rules.mk` files now need to be accompanied by a corresponding `POINTING_DEVICE_DRIVER = ???` line, specifying which driver to use during the build. Existing keyboards have already been migrated across to the new usage pattern, so most likely no change is required by users.
+
+QMK now has core-supplied support for the following pointing device peripherals:
+
+| `rules.mk` line | Supported device |
+|------------------------------------------------|-----------------------------------------|
+| `POINTING_DEVICE_DRIVER = analog_joystick` | Analog joysticks, such as PSP joysticks |
+| `POINTING_DEVICE_DRIVER = adns5050` | ADNS 5050 sensor |
+| `POINTING_DEVICE_DRIVER = adns9800` | ADNS 9800 laser sensor |
+| `POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c` | Cirque touchpad, I2C mode |
+| `POINTING_DEVICE_DRIVER = cirque_pinnacle_spi` | Cirque Touchpad, SPI mode |
+| `POINTING_DEVICE_DRIVER = pimoroni_trackball` | Pimoroni Trackball |
+| `POINTING_DEVICE_DRIVER = pmw3360` | PMW 3360 |
+
+See the new documentation for the [Pointing Device](../feature_pointing_device.md) feature for more information on specific configuration for each driver.
+
+### Dynamic Tapping Term ([#11036](https://github.com/qmk/qmk_firmware/pull/11036)) :id=dynamic-tapping-term
+
+For people who are starting out with tapping keys, or for people who think tapping keys don't "feel right", it's sometimes quite difficult to determine what duration of tapping term to use to make things seem natural.
+
+If you're in this stage of discovery, you can now add `DYNAMIC_TAPPING_TERM_ENABLE = yes` to your `rules.mk`, which enables the use of the following keycodes in your keymap:
+
+| Key | Description |
+|-----------|-------------------------------------------------------------------------------|
+| `DT_PRNT` | "Dynamic Tapping Term Print": Types the current tapping term, in milliseconds |
+| `DT_UP` | "Dynamic Tapping Term Up": Increases the current tapping term by 5ms |
+| `DT_DOWN` | "Dynamic Tapping Term Down": Decreases the current tapping term by 5ms |
+
+Coupled with the use of `qmk console` or QMK Toolbox to show console output from your keyboard, you can tweak the tapping term dynamically in order to narrow down what "feels right" to you. Once you're happy, drop in the resulting number into your keymap's `config.h` and you're good to go!
+
+### Macros in JSON keymaps ([#14374](https://github.com/qmk/qmk_firmware/pull/14374)) :id=macros-in-keymap-json
+
+You can now define up to 32 macros in your `keymap.json` file, as used by [QMK Configurator](newbs_building_firmware_configurator.md), and `qmk compile`. You can define these macros in a list under the `macros` keyword, like this:
+
+```json
+{
+ "keyboard": "handwired/my_macropad",
+ "keymap": "my_keymap",
+ "macros": [
+ [ // first listed is MACRO_0...
+ {"action":"down", "keycodes": ["LSFT"]},
+ "hello world1",
+ {"action": "up","keycodes": ["LSFT"]}
+ ],
+ [ // ...then MACRO_1...
+ {"action":"tap", "keycodes": ["LCTL", "LALT", "DEL"]}
+ ],
+ [ // ...then MACRO_2...
+ "ding!",
+ {"action":"beep"}
+ ],
+ [ // ...and MACRO_3.
+ {"action":"tap", "keycodes": ["F1"]},
+ {"action":"delay", "duration": "1000"},
+ {"action":"tap", "keycodes": ["PGDN"]}
+ ]
+ ],
+ "layout": "LAYOUT_all",
+ "layers": [
+ ["MACRO_0", "MACRO_1", "MACRO_2", "MACRO_3"]
+ ]
+}
+```
+
+In due course, [QMK Configurator](https://config.qmk.fm/) will pick up support for defining these in its UI, but for now the json is the only way to define macros.
+
+## Changes Requiring User Action :id=changes-requiring-user-action
+
+### Updated Keyboard Codebases :id=updated-keyboard-codebases
+
+The following keyboards have had their source moved within QMK:
+
+| Old Keyboard Name | New Keyboard Name |
+|------------------------|---------------------------------|
+| aozora/hotswap | aozora |
+| gskt00 | kapcave/gskt00 |
+| handwired/dtisaac01 | dtisaac/dtisaac01 |
+| kprepublic/bm60poker | kprepublic/bm60hsrgb_poker/rev1 |
+| kprepublic/bm60rgb | kprepublic/bm60hsrgb/rev1 |
+| kprepublic/bm60rgb_iso | kprepublic/bm60hsrgb_iso/rev1 |
+| kprepublic/bm65iso | kprepublic/bm65hsrgb_iso |
+| kprepublic/bm68rgb | kprepublic/bm68hsrgb |
+| paladin64 | kapcave/paladin64 |
+| portal_66 | portal_66/soldered |
+| signum/3_0/elitec | signum/3_0 |
+| tgr/jane | tgr/jane/v2 |
+
+### Squeezing space out of AVR ([#15243](https://github.com/qmk/qmk_firmware/pull/15243)) :id=squeezing-space-from-avr
+
+The AVR platform has been problematic for some time, in the sense that it is severely resource-constrained -- this makes life difficult for anyone attempting to add new functionality such as display panels to their keymap code. The illustrious Drashna has contributed some newer documentation on how to attempt to free up some space on AVR-based keyboards that are in short supply.
+
+Of course, there are much fewer constraints with ARM chips... ;)
+
+### Require explicit enabling of RGB Matrix modes ([#15018](https://github.com/qmk/qmk_firmware/pull/15018)) :id=explicit-rgb-modes
+
+Related to the previous section -- RGB Matrix modes have now been made to be opt-in, rather than opt-out. As these animations are now opt-in, you may find that your keyboard no longer has all the RGB modes you're expecting -- you may need to configure and recompile your firmware and enable your animations of choice... with any luck they'll still fit in the space available.
+
+Most keyboards keep their original functionality, but over time the QMK maintainers have found that removal of animations ends up being the quickest way to free up space... and some keyboards have had animations such as reactive effects disabled by default in order to still fit within the flash space available.
+
+The full list of configurables to turn specific animations back on can be found at on the [RGB Matrix documentation](feature_rgb_matrix.md#rgb-matrix-effects) page.
+
+### OLED task refactoring ([#14864](https://github.com/qmk/qmk_firmware/pull/14864)) :id=oled-task-refactor
+
+OLED display code was traditionally difficult to override in keymaps as they did not follow the standard pattern of `bool *_kb()` deferring to `bool *_user()` functions, allowing signalling to the higher level that processing had already been done.
+
+This changes the standard OLED drawing function model to allow for a base implementation to be provided by a keyboard, but also still allow for keymap-level overrides without needing to modify the keyboard's code.
+
+The old keymap code went something like this:
+
+```c
+void oled_task_user(void) {
+ // keymap drawing code
+}
+```
+
+...but the new keymap code looks like this:
+```c
+bool oled_task_user(void) {
+ // keymap drawing code
+ return false;
+}
+```
+
+Keyboard designers should now structure their keyboard-level drawing routines like the following, in order to allow for keymap overrides:
+
+```c
+bool oled_task_kb(void) {
+ // Defer to the keymap if they want to override
+ if(!oled_task_user()) { return false; }
+
+ // default keyboard drawing code
+ return false;
+}
+```
+
+### Bootmagic Full Removal ([#15002](https://github.com/qmk/qmk_firmware/pull/15002)) :id=bootmagic-full-removal
+
+As noted during previous breaking changes cycles, QMK decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option.
+
+This removal is now complete!
+
+This pull request changes the behavior of `BOOTMAGIC_ENABLE` such that specifying `lite` or `full` results in an error, allowing only `yes` or `no`, with `yes` mirroring historical `lite` functionality.
+
+All use of the `lite` keyword within the repository has been migrated to `yes` -- any new submissions using `lite` will now fail to build and should be updated accordingly.
+
+#### Bootmagic Full Deprecation Schedule: Complete!
+
+This is the historical timeline for the behavior of `BOOTMAGIC_ENABLE`:
+
+- (done) From 2021 May 29, setting `BOOTMAGIC_ENABLE = yes` will enable Bootmagic Lite instead of full Bootmagic.
+- (done) From 2021 Aug 28, `BOOTMAGIC_ENABLE` must be either `yes`, `lite`, or `no` – setting `BOOTMAGIC_ENABLE = full` will cause compilation to fail.
+- (now) From 2021 Nov 27, `BOOTMAGIC_ENABLE` must be either `yes` or `no` – setting `BOOTMAGIC_ENABLE = lite` will cause compilation to fail.
+
+### Remove QWIIC_DRIVERS ([#14174](https://github.com/qmk/qmk_firmware/pull/14174)) :id=remove-qwiic
+
+Due to minimal QWIIC adoption and other options for similar functionality, the QWIIC drivers were removed from QMK. Existing OLED usages have been migrated across to the normal QMK OLED driver instead.
+
+## Notable core changes :id=notable-core
+
+### New MCU Support :id=new-mcu-support
+
+QMK firmware picked up support for a handful of new MCU families, potentially making it a bit easier to source components.
+
+QMK firmware is now no longer limited to AVR and ARM - it also picked up support for our first RISC-V chip, the GD32VF103.
+
+* Add support for RISC-V builds and GD32VF103 MCU ([#12508](https://github.com/qmk/qmk_firmware/pull/12508))
+* Add HT32 support to core ([#14388](https://github.com/qmk/qmk_firmware/pull/14388))
+* Westberrytech pr ([#14422](https://github.com/qmk/qmk_firmware/pull/14422))
+* Initial pass of F405 support ([#14584](https://github.com/qmk/qmk_firmware/pull/14584))
+
+### EEPROM Changes :id=eeprom-changes
+
+There were a few EEPROM-related changes that landed during this breaking changes cycle, most prominently the long-awaited ability for the Drop boards to gain persistent storage. Any users of the Drop CTRL or Drop ALT should update QMK Toolbox as well -- coupled with a QMK firmware update settings should now be saved.
+
+* massdrop alt/ctrl: support saving into nvm ([#6068](https://github.com/qmk/qmk_firmware/pull/6068))
+* Implement F4 eeprom ([#14195](https://github.com/qmk/qmk_firmware/pull/14195))
+* make the full 4096 bytes of EEPROM work on Teensy 3.6 ([#12947](https://github.com/qmk/qmk_firmware/pull/12947))
+* Further tidy up of STM32 eeprom emulation ([#14591](https://github.com/qmk/qmk_firmware/pull/14591))
+* Enable eeprom with F401xE ld ([#14752](https://github.com/qmk/qmk_firmware/pull/14752))
+
+### Compilation Database :id=compile-commands
+
+A clang-compatible compilation database generator has been added as an option in order to help development environments such as Visual Studio Code.
+
+Running `qmk generate-compilation-database -kb -km ` from within the QMK firmware directory will generate a `compile_commands.json` file -- using a compatible IDE will likely see this and correctly start detecting the correct locations for source files as well as type and function information that are relevant to your build.
+
+Do note that switching keyboards will require re-generation of this file.
+
+* New CLI subcommand to create clang-compatible compilation database (`compile_commands.json`) ([#14370](https://github.com/qmk/qmk_firmware/pull/14370))
+* compiledb: query include paths from gcc directly. ([#14462](https://github.com/qmk/qmk_firmware/pull/14462))
+
+### Codebase restructure and cleanup :id=codebase-restructure
+
+QMK continues on its restructuring journey, in order to make it easier to integrate newer features and add support for new hardware. This quarter's batch of changes include:
+
+* add 'include keyboard_features.mk' into build_keyboard.mk ([#8422](https://github.com/qmk/qmk_firmware/pull/8422))
+* Infer more when building features ([#13890](https://github.com/qmk/qmk_firmware/pull/13890))
+* Move `tmk_core/common/` ([#13918](https://github.com/qmk/qmk_firmware/pull/13918))
+* Move feature suspend logic out of platform specific code ([#14210](https://github.com/qmk/qmk_firmware/pull/14210))
+* Remove bin/qmk ([#14231](https://github.com/qmk/qmk_firmware/pull/14231))
+* Move Audio drivers from quantum to platform drivers folder ([#14308](https://github.com/qmk/qmk_firmware/pull/14308))
+* Remove Arduino-style `analogRead()` ([#14348](https://github.com/qmk/qmk_firmware/pull/14348))
+* Remove unreferenced IBM4704, Sony NEWS, NeXT keyboard code. ([#14380](https://github.com/qmk/qmk_firmware/pull/14380))
+* Move Bluetooth config to common_features.mk ([#14404](https://github.com/qmk/qmk_firmware/pull/14404))
+* Relocate Adafruit BLE code ([#14530](https://github.com/qmk/qmk_firmware/pull/14530))
+* Change `MK66F18` -> `MK66FX1M0` ([#14659](https://github.com/qmk/qmk_firmware/pull/14659))
+* Remove sysex API ([#14723](https://github.com/qmk/qmk_firmware/pull/14723))
+* Basic keycode overhaul ([#14726](https://github.com/qmk/qmk_firmware/pull/14726))
+* Remove SERIAL_LINK feature ([#14727](https://github.com/qmk/qmk_firmware/pull/14727))
+* Move converter specific tmk_core protocols ([#14743](https://github.com/qmk/qmk_firmware/pull/14743))
+* Align PS/2 GPIO defines ([#14745](https://github.com/qmk/qmk_firmware/pull/14745))
+* Clean up LED/RGB Matrix driver config ([#14760](https://github.com/qmk/qmk_firmware/pull/14760))
+* Update UART driver API ([#14839](https://github.com/qmk/qmk_firmware/pull/14839))
+* Tidy up LCD_ENABLE/visualizer references ([#14855](https://github.com/qmk/qmk_firmware/pull/14855))
+* Remove legacy Makefile functionality ([#14858](https://github.com/qmk/qmk_firmware/pull/14858))
+* Begin to carve out platform/protocol API - Migrate keyboard_* calls ([#14888](https://github.com/qmk/qmk_firmware/pull/14888))
+* Rename platform SRC variable ([#14894](https://github.com/qmk/qmk_firmware/pull/14894))
+* Relocate PS2 code ([#14895](https://github.com/qmk/qmk_firmware/pull/14895))
+* Move USE_CCACHE logic to common location ([#14899](https://github.com/qmk/qmk_firmware/pull/14899))
+* Migrate makefile utilities to sub-directory ([#14917](https://github.com/qmk/qmk_firmware/pull/14917))
+* Remove SERIAL_MOUSE ([#14969](https://github.com/qmk/qmk_firmware/pull/14969))
+* Relocate protocol files within tmk_core/common/ ([#14972](https://github.com/qmk/qmk_firmware/pull/14972))
+* More platform/protocol alignment ([#14976](https://github.com/qmk/qmk_firmware/pull/14976))
+* Fix uart function prototypes ([#15162](https://github.com/qmk/qmk_firmware/pull/15162))
+* Remove deprecated KEYMAP alias ([#15037](https://github.com/qmk/qmk_firmware/pull/15037))
+* Move non-assignment code to post_rules.mk ([#14207](https://github.com/qmk/qmk_firmware/pull/14207))
+* Helix use `post_rules.mk` ([#14216](https://github.com/qmk/qmk_firmware/pull/14216))
+* Make ChibiOS PAL interactions less STM32 specific - Round 2 ([#14456](https://github.com/qmk/qmk_firmware/pull/14456))
+
+---
+
+## Full changelist
+
+Core:
+* massdrop alt/ctrl: support saving into nvm ([#6068](https://github.com/qmk/qmk_firmware/pull/6068))
+* Made AVR backlight pwm resolution configurable ([#7521](https://github.com/qmk/qmk_firmware/pull/7521))
+* add 'include keyboard_features.mk' into build_keyboard.mk ([#8422](https://github.com/qmk/qmk_firmware/pull/8422))
+* New feature: `DYNAMIC_TAPPING_TERM_ENABLE` ([#11036](https://github.com/qmk/qmk_firmware/pull/11036))
+* Add Retro Shift (Auto Shift for Tap Hold via Retro Tapping) and Custom Auto Shifts ([#11059](https://github.com/qmk/qmk_firmware/pull/11059))
+* Add support for RISC-V builds and GD32VF103 MCU ([#12508](https://github.com/qmk/qmk_firmware/pull/12508))
+* Add Fractal RGB matrix effects ([#12670](https://github.com/qmk/qmk_firmware/pull/12670))
+* Added power tracking api ([#12691](https://github.com/qmk/qmk_firmware/pull/12691))
+* haptic: Feature to disable it when usb port is not configured or suspended. ([#12692](https://github.com/qmk/qmk_firmware/pull/12692))
+* make the full 4096 bytes of EEPROM work on Teensy 3.6 ([#12947](https://github.com/qmk/qmk_firmware/pull/12947))
+* Add Support for USB programmable buttons ([#12950](https://github.com/qmk/qmk_firmware/pull/12950))
+* [Tests] Increase QMK test coverage ([#13789](https://github.com/qmk/qmk_firmware/pull/13789))
+* Add support for ISSI drivers on both sides of a split keyboard ([#13842](https://github.com/qmk/qmk_firmware/pull/13842))
+* Infer more when building features ([#13890](https://github.com/qmk/qmk_firmware/pull/13890))
+* Reimplements WPM feature to be smaller & precise ([#13902](https://github.com/qmk/qmk_firmware/pull/13902))
+* Move `tmk_core/common/` ([#13918](https://github.com/qmk/qmk_firmware/pull/13918))
+* Improvements to handling of disconnected split keyboards. ([#14033](https://github.com/qmk/qmk_firmware/pull/14033))
+* Add Pixel Rain RGB Matrix effect ([#14155](https://github.com/qmk/qmk_firmware/pull/14155))
+* Remove QWIIC_DRIVERS ([#14174](https://github.com/qmk/qmk_firmware/pull/14174))
+* Add LM() keys to the list of keys disabled by NO_HAPTIC_MOD ([#14181](https://github.com/qmk/qmk_firmware/pull/14181))
+* Implement F4 eeprom ([#14195](https://github.com/qmk/qmk_firmware/pull/14195))
+* define to AUTO_SHIFT_DISABLED_AT_STARTUP ([#14201](https://github.com/qmk/qmk_firmware/pull/14201))
+* Move feature suspend logic out of platform specific code ([#14210](https://github.com/qmk/qmk_firmware/pull/14210))
+* Remove bin/qmk ([#14231](https://github.com/qmk/qmk_firmware/pull/14231))
+* Change keyboard level include guards to `pragma once` ([#14248](https://github.com/qmk/qmk_firmware/pull/14248))
+* i2c_master: Add support for reading/writing to 16-bit registers ([#14289](https://github.com/qmk/qmk_firmware/pull/14289))
+* Move Audio drivers from quantum to platform drivers folder ([#14308](https://github.com/qmk/qmk_firmware/pull/14308))
+* Add RGBW support to PWM and SPI drivers for ChibiOS ([#14327](https://github.com/qmk/qmk_firmware/pull/14327))
+* Rework and expand Pointing Device support ([#14343](https://github.com/qmk/qmk_firmware/pull/14343))
+* Remove Arduino-style `analogRead()` ([#14348](https://github.com/qmk/qmk_firmware/pull/14348))
+* Macros in JSON keymaps ([#14374](https://github.com/qmk/qmk_firmware/pull/14374))
+* Remove unreferenced IBM4704, Sony NEWS, NeXT keyboard code. ([#14380](https://github.com/qmk/qmk_firmware/pull/14380))
+* Add HT32 support to core ([#14388](https://github.com/qmk/qmk_firmware/pull/14388))
+* Align ChibiOS I2C defs with other drivers ([#14399](https://github.com/qmk/qmk_firmware/pull/14399))
+* Move Bluetooth config to common_features.mk ([#14404](https://github.com/qmk/qmk_firmware/pull/14404))
+* Westberrytech pr ([#14422](https://github.com/qmk/qmk_firmware/pull/14422))
+* Refactor use of STM32_SYSCLK ([#14430](https://github.com/qmk/qmk_firmware/pull/14430))
+* Migrate STM32_EEPROM_ENABLE to use EEPROM_DRIVER ([#14433](https://github.com/qmk/qmk_firmware/pull/14433))
+* Refactor use of _STM32_ defines ([#14439](https://github.com/qmk/qmk_firmware/pull/14439))
+* Add i2c defaults for Convert to Proton C ([#14470](https://github.com/qmk/qmk_firmware/pull/14470))
+* Use opendrain pin with external pullup again ([#14474](https://github.com/qmk/qmk_firmware/pull/14474))
+* Add ability to use numpad digits for unicode mode UC_WIN ([#14496](https://github.com/qmk/qmk_firmware/pull/14496))
+* Enable de-ghosting for RGB/LED matrix on all ISSI LED drivers ([#14508](https://github.com/qmk/qmk_firmware/pull/14508))
+* Relocate Adafruit BLE code ([#14530](https://github.com/qmk/qmk_firmware/pull/14530))
+* Initial pass of F405 support ([#14584](https://github.com/qmk/qmk_firmware/pull/14584))
+* Further tidy up of STM32 eeprom emulation ([#14591](https://github.com/qmk/qmk_firmware/pull/14591))
+* Remove GCC version check from song list inclusion ([#14600](https://github.com/qmk/qmk_firmware/pull/14600))
+* Change `MK66F18` -> `MK66FX1M0` ([#14659](https://github.com/qmk/qmk_firmware/pull/14659))
+* Add ifndef to WS2812 timing constraints ([#14678](https://github.com/qmk/qmk_firmware/pull/14678))
+* Reuse of EEPROM debounce logic ([#14699](https://github.com/qmk/qmk_firmware/pull/14699))
+* Remove sysex API ([#14723](https://github.com/qmk/qmk_firmware/pull/14723))
+* Basic keycode overhaul ([#14726](https://github.com/qmk/qmk_firmware/pull/14726))
+* Remove SERIAL_LINK feature ([#14727](https://github.com/qmk/qmk_firmware/pull/14727))
+* Enable CLI flashing via mdloader ([#14729](https://github.com/qmk/qmk_firmware/pull/14729))
+* Correct the Turkish F '?' keycode (TR_QUES) ([#14740](https://github.com/qmk/qmk_firmware/pull/14740))
+* Move converter specific tmk_core protocols ([#14743](https://github.com/qmk/qmk_firmware/pull/14743))
+* Align PS/2 GPIO defines ([#14745](https://github.com/qmk/qmk_firmware/pull/14745))
+* Improve Adafruit BLE configuration defines ([#14749](https://github.com/qmk/qmk_firmware/pull/14749))
+* Enable eeprom with F401xE ld ([#14752](https://github.com/qmk/qmk_firmware/pull/14752))
+* Clean up LED/RGB Matrix driver config ([#14760](https://github.com/qmk/qmk_firmware/pull/14760))
+* Initial USB2422 driver ([#14835](https://github.com/qmk/qmk_firmware/pull/14835))
+* Update UART driver API ([#14839](https://github.com/qmk/qmk_firmware/pull/14839))
+* Split out arm_atsam shift register logic ([#14848](https://github.com/qmk/qmk_firmware/pull/14848))
+* Split out HAPTIC_ENABLE to have separate DRIVER option ([#14854](https://github.com/qmk/qmk_firmware/pull/14854))
+* Tidy up LCD_ENABLE/visualizer references ([#14855](https://github.com/qmk/qmk_firmware/pull/14855))
+* Remove legacy Makefile functionality ([#14858](https://github.com/qmk/qmk_firmware/pull/14858))
+* Add support for deferred executors. ([#14859](https://github.com/qmk/qmk_firmware/pull/14859))
+* Change OLED task function to be boolean ([#14864](https://github.com/qmk/qmk_firmware/pull/14864))
+* Add a new led driver for Keychron's keyboards. ([#14872](https://github.com/qmk/qmk_firmware/pull/14872))
+* Begin to carve out platform/protocol API - Migrate keyboard_* calls ([#14888](https://github.com/qmk/qmk_firmware/pull/14888))
+* Rename platform SRC variable ([#14894](https://github.com/qmk/qmk_firmware/pull/14894))
+* Relocate PS2 code ([#14895](https://github.com/qmk/qmk_firmware/pull/14895))
+* Move USE_CCACHE logic to common location ([#14899](https://github.com/qmk/qmk_firmware/pull/14899))
+* Migrate makefile utilities to sub-directory ([#14917](https://github.com/qmk/qmk_firmware/pull/14917))
+* Remove legacy handling for ErgoDox Infinity handedness ([#14919](https://github.com/qmk/qmk_firmware/pull/14919))
+* Align usbasp flashing behaviour ([#14928](https://github.com/qmk/qmk_firmware/pull/14928))
+* Optimize matrix scanning by removing variable shifts ([#14947](https://github.com/qmk/qmk_firmware/pull/14947))
+* Stop-gap forward-port Drop LED features for CTRL and ALT ([#14967](https://github.com/qmk/qmk_firmware/pull/14967))
+* Remove SERIAL_MOUSE ([#14969](https://github.com/qmk/qmk_firmware/pull/14969))
+* Relocate protocol files within tmk_core/common/ ([#14972](https://github.com/qmk/qmk_firmware/pull/14972))
+* Move LTO logic from common.mk ([#14973](https://github.com/qmk/qmk_firmware/pull/14973))
+* More platform/protocol alignment ([#14976](https://github.com/qmk/qmk_firmware/pull/14976))
+* Add support to persist MD LED framework settings ([#14980](https://github.com/qmk/qmk_firmware/pull/14980))
+* Enable configuration of PWM frequency for IS31FL3733B ([#14983](https://github.com/qmk/qmk_firmware/pull/14983))
+* Remove `BOOTMAGIC_ENABLE = lite` option ([#15002](https://github.com/qmk/qmk_firmware/pull/15002))
+* Manually format develop ([#15003](https://github.com/qmk/qmk_firmware/pull/15003))
+* Require explicit enabling of RGB Matrix modes ([#15018](https://github.com/qmk/qmk_firmware/pull/15018))
+* Remove deprecated KEYMAP alias ([#15037](https://github.com/qmk/qmk_firmware/pull/15037))
+* Fix uart function prototypes ([#15162](https://github.com/qmk/qmk_firmware/pull/15162))
+* Rename RGB fractal ([#15174](https://github.com/qmk/qmk_firmware/pull/15174))
+* Format code according to conventions ([#15195](https://github.com/qmk/qmk_firmware/pull/15195))
+* Format code according to conventions ([#15196](https://github.com/qmk/qmk_firmware/pull/15196))
+* Add uint to char functions ([#15244](https://github.com/qmk/qmk_firmware/pull/15244))
+* [Tests] Increase QMK test coverage take 2 ([#15269](https://github.com/qmk/qmk_firmware/pull/15269))
+* Tidy up adjustable ws2812 timing ([#15299](https://github.com/qmk/qmk_firmware/pull/15299))
+* Add script for performing compilation size regression investigations. ([#15303](https://github.com/qmk/qmk_firmware/pull/15303))
+* WB32F3G71 config migration with removal of unnecessary items. ([#15309](https://github.com/qmk/qmk_firmware/pull/15309))
+* Re-add encoder tests ([#15312](https://github.com/qmk/qmk_firmware/pull/15312))
+
+CLI:
+* Add check for non-assignment code in rules.mk ([#12108](https://github.com/qmk/qmk_firmware/pull/12108))
+* Export list of `develop` PRs to be merged into `master` ([#13944](https://github.com/qmk/qmk_firmware/pull/13944))
+* remove qmk console, which is now part of the global cli ([#14206](https://github.com/qmk/qmk_firmware/pull/14206))
+* New CLI subcommand to create clang-compatible compilation database (`compile_commands.json`) ([#14370](https://github.com/qmk/qmk_firmware/pull/14370))
+* compiledb: query include paths from gcc directly. ([#14462](https://github.com/qmk/qmk_firmware/pull/14462))
+
+Submodule updates:
+* Update to ChibiOS 20.3.4, support builds against trunk ([#14208](https://github.com/qmk/qmk_firmware/pull/14208))
+* Update ChibiOS-Contrib ([#14408](https://github.com/qmk/qmk_firmware/pull/14408))
+* Update ChibiOS-Contrib ([#14419](https://github.com/qmk/qmk_firmware/pull/14419))
+* Purge uGFX. ([#14720](https://github.com/qmk/qmk_firmware/pull/14720))
+
+Keyboards:
+* Add support for PaladinPad, Arya pcb and move keyboards by KapCave into their own directory ([#14194](https://github.com/qmk/qmk_firmware/pull/14194))
+* Move non-assignment code to post_rules.mk ([#14207](https://github.com/qmk/qmk_firmware/pull/14207))
+* Helix use `post_rules.mk` ([#14216](https://github.com/qmk/qmk_firmware/pull/14216))
+* handwired/symmetric70_proto use post_rules.mk ([#14235](https://github.com/qmk/qmk_firmware/pull/14235))
+* Add Adelais PCB. Adelais RGB rev.3, Adelais rev. 4 APM32F103, Adelais AVR rev. 1 ([#14252](https://github.com/qmk/qmk_firmware/pull/14252))
+* GMMK Pro keymap ([#14389](https://github.com/qmk/qmk_firmware/pull/14389))
+* Migrate boston_meetup/2019 away from QWIIC_DRIVERS ([#14413](https://github.com/qmk/qmk_firmware/pull/14413))
+* Migrate hadron away from QWIIC_DRIVERS ([#14415](https://github.com/qmk/qmk_firmware/pull/14415))
+* Enable Proton C defaults for SplitKB Kyria ([#14490](https://github.com/qmk/qmk_firmware/pull/14490))
+* Set USB max power consumption of kint* controllers to 100mA ([#14546](https://github.com/qmk/qmk_firmware/pull/14546))
+* Remove complex `fn_actions` macros ([#14662](https://github.com/qmk/qmk_firmware/pull/14662))
+* New Keyboard: TGR Jane CE ([#14713](https://github.com/qmk/qmk_firmware/pull/14713))
+* Migrate satisfaction75 away from QWIIC_DRIVERS ([#14747](https://github.com/qmk/qmk_firmware/pull/14747))
+* add Lefty keyboard ([#14898](https://github.com/qmk/qmk_firmware/pull/14898))
+* overnumpad controller: Add support for turning off solenoid enable in low power. ([#15021](https://github.com/qmk/qmk_firmware/pull/15021))
+* Reduce compile size for melgeek mach80 ([#15034](https://github.com/qmk/qmk_firmware/pull/15034))
+* Update updated KPrepublic boards to be prepared for the update ([#15040](https://github.com/qmk/qmk_firmware/pull/15040))
+* rename kprepublic bm keyboards to have a standardized naming format ([#15047](https://github.com/qmk/qmk_firmware/pull/15047))
+* matrix/abelx - Update ChibiOS conf files ([#15130](https://github.com/qmk/qmk_firmware/pull/15130))
+* Disable console on Keebio foldkb and iris rev3 ([#15260](https://github.com/qmk/qmk_firmware/pull/15260))
+* Disable console on Sofle default keymap ([#15261](https://github.com/qmk/qmk_firmware/pull/15261))
+* Disable features on SplitKB boards to fit under size ([#15262](https://github.com/qmk/qmk_firmware/pull/15262))
+* Enable LTO on viktus/sp_mini via keymap ([#15263](https://github.com/qmk/qmk_firmware/pull/15263))
+
+Keyboard fixes:
+* Fix number of elements in info.json does not match errors ([#14213](https://github.com/qmk/qmk_firmware/pull/14213))
+* Fix typos from 14248 ([#14261](https://github.com/qmk/qmk_firmware/pull/14261))
+* Stream cheap via fixes/updates ([#14325](https://github.com/qmk/qmk_firmware/pull/14325))
+* Map `PRODUCT` define to `keyboard_name` ([#14372](https://github.com/qmk/qmk_firmware/pull/14372))
+* Fix BT rules for dosa40rgb ([#14497](https://github.com/qmk/qmk_firmware/pull/14497))
+* Fix typo in mechloving adelais header files ([#14590](https://github.com/qmk/qmk_firmware/pull/14590))
+* Fix for mechlovin/adelais/standard_led/arm/rev4 ([#14639](https://github.com/qmk/qmk_firmware/pull/14639))
+* Fix OLED timeout on recent qwiic migrations ([#14775](https://github.com/qmk/qmk_firmware/pull/14775))
+* Fix OLED timeout on satisfaction75 after migration from QWIIC ([#14780](https://github.com/qmk/qmk_firmware/pull/14780))
+* Fix Compile issues for lefty ([#14982](https://github.com/qmk/qmk_firmware/pull/14982))
+* Fix missing return for oled task on Lefty ([#15010](https://github.com/qmk/qmk_firmware/pull/15010))
+* Fix missing return for oled task on Arabica37 ([#15011](https://github.com/qmk/qmk_firmware/pull/15011))
+* Fix missing return for oled task in drashna userspace ([#15012](https://github.com/qmk/qmk_firmware/pull/15012))
+* Fix size issues on pistachio pro via keymap ([#15017](https://github.com/qmk/qmk_firmware/pull/15017))
+* Fix keycode collision in craftwalk keymap ([#15055](https://github.com/qmk/qmk_firmware/pull/15055))
+* Fix compilation issues for yanghu Unicorne ([#15068](https://github.com/qmk/qmk_firmware/pull/15068))
+* Fixup broken build after #15040 ([#15073](https://github.com/qmk/qmk_firmware/pull/15073))
+* Fix compilation issues for Lime ([#15116](https://github.com/qmk/qmk_firmware/pull/15116))
+* Fix additional board sizes for RGB Matrix ([#15170](https://github.com/qmk/qmk_firmware/pull/15170))
+* Fix bandominedoni via keymap compilation ([#15171](https://github.com/qmk/qmk_firmware/pull/15171))
+* Fix handful of boards compiling too large due to RGB matrix changes ([#15184](https://github.com/qmk/qmk_firmware/pull/15184))
+* Fix oled_task_user for ffkeebs/puca ([#15185](https://github.com/qmk/qmk_firmware/pull/15185))
+* More headroom. ([#15301](https://github.com/qmk/qmk_firmware/pull/15301))
+* More headroom. ([#15302](https://github.com/qmk/qmk_firmware/pull/15302))
+
+Others:
+* Clean up some code block languages ([#14434](https://github.com/qmk/qmk_firmware/pull/14434))
+* Clarify "nested" and "rolling" key sequences ([#14655](https://github.com/qmk/qmk_firmware/pull/14655))
+* CI: Create GitHub Actions unit test workflow ([#15223](https://github.com/qmk/qmk_firmware/pull/15223))
+* Squeezing space out of AVR ([#15243](https://github.com/qmk/qmk_firmware/pull/15243))
+
+Bugs:
+* Fix parallel builds w/ LTO on systems where make is not GNU make. ([#13955](https://github.com/qmk/qmk_firmware/pull/13955))
+* fix automatic directory for qmk lint ([#14215](https://github.com/qmk/qmk_firmware/pull/14215))
+* RN42 Bluetooth typo fix ([#14421](https://github.com/qmk/qmk_firmware/pull/14421))
+* fix typo in backlight code from #14439 ([#14442](https://github.com/qmk/qmk_firmware/pull/14442))
+* fix compilation issues with USB programmable buttons ([#14454](https://github.com/qmk/qmk_firmware/pull/14454))
+* Fix descriptor for USB Programmable Buttons ([#14455](https://github.com/qmk/qmk_firmware/pull/14455))
+* Make ChibiOS PAL interactions less STM32 specific - Round 2 ([#14456](https://github.com/qmk/qmk_firmware/pull/14456))
+* fix logical minimum in Programmable Button rdesc ([#14464](https://github.com/qmk/qmk_firmware/pull/14464))
+* Fix i2c_readReg16 ([#14730](https://github.com/qmk/qmk_firmware/pull/14730))
+* Put back eeconfig_update_ functions ([#14751](https://github.com/qmk/qmk_firmware/pull/14751))
+* Fix misplaced endif in led_matrix_drivers.c ([#14785](https://github.com/qmk/qmk_firmware/pull/14785))
+* Fix builds for ChibiOS + Cortex-M0[+] ([#14879](https://github.com/qmk/qmk_firmware/pull/14879))
+* Fix ccache default ([#14906](https://github.com/qmk/qmk_firmware/pull/14906))
+* Fix issues with Oneshot disabling ([#14934](https://github.com/qmk/qmk_firmware/pull/14934))
+* Fix develop after recent changes ([#14975](https://github.com/qmk/qmk_firmware/pull/14975))
+* Fix up issues shown by clang-format of vusb ([#15004](https://github.com/qmk/qmk_firmware/pull/15004))
+* Fix unterminated ifdef in ISSI 3733 driver ([#15014](https://github.com/qmk/qmk_firmware/pull/15014))
+* Fix build failures caused by #12947. ([#15019](https://github.com/qmk/qmk_firmware/pull/15019))
+* Fixup LED matrix. ([#15020](https://github.com/qmk/qmk_firmware/pull/15020))
+* Revert to old init order for host driver ([#15029](https://github.com/qmk/qmk_firmware/pull/15029))
+* Fixup #15029 ([#15031](https://github.com/qmk/qmk_firmware/pull/15031))
+* RISC-V toolchain and picolibc fixes ([#15109](https://github.com/qmk/qmk_firmware/pull/15109))
+* gcc10 LTO - Only specify adhlns assembler options at link time ([#15115](https://github.com/qmk/qmk_firmware/pull/15115))
+* Add needed include to pointing_device.c ([#15167](https://github.com/qmk/qmk_firmware/pull/15167))
+* Fix missing variable for Backlight Breathing ([#15199](https://github.com/qmk/qmk_firmware/pull/15199))
+* Revert backlight pins on function call ([#15205](https://github.com/qmk/qmk_firmware/pull/15205))
+* Fix timer include in override_wiring.c ([#15221](https://github.com/qmk/qmk_firmware/pull/15221))
+* fix broken macro in transport.h ([#15239](https://github.com/qmk/qmk_firmware/pull/15239))
+* Short term bodge for PRODUCT warning ([#15240](https://github.com/qmk/qmk_firmware/pull/15240))
+* Remove use of __flash due to LTO issues ([#15268](https://github.com/qmk/qmk_firmware/pull/15268))
+* Documentation typo fix ([#15298](https://github.com/qmk/qmk_firmware/pull/15298))
+* [Core] Hotfix for HOLD_ON_OTHER_KEY_PRESS after #11059 ([#15307](https://github.com/qmk/qmk_firmware/pull/15307))
+* Fix call to pointing_device_handle_buttons ([#15313](https://github.com/qmk/qmk_firmware/pull/15313))
+* [Develop] Fix ploopy readme typos ([#15316](https://github.com/qmk/qmk_firmware/pull/15316))
diff --git a/docs/_summary.md b/docs/_summary.md
index 2f6309e41d1..e26d9ae2106 100644
--- a/docs/_summary.md
+++ b/docs/_summary.md
@@ -13,6 +13,7 @@
* [Troubleshooting QMK](faq_misc.md)
* [Debugging QMK](faq_debug.md)
* [Keymap FAQ](faq_keymap.md)
+ * [Squeezing Space from AVR](squeezing_avr.md)
* [Glossary](reference_glossary.md)
* Configurator
@@ -72,6 +73,7 @@
* [Mod-Tap](mod_tap.md)
* [Macros](feature_macros.md)
* [Mouse Keys](feature_mouse_keys.md)
+ * [Programmable Button](feature_programmable_button.md)
* [Space Cadet Shift](feature_space_cadet.md)
* [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
@@ -127,7 +129,7 @@
* Breaking Changes
* [Overview](breaking_changes.md)
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
- * [Most Recent ChangeLog](ChangeLog/20210529.md "QMK v0.13.0 - 2021 May 29")
+ * [Most Recent ChangeLog](ChangeLog/20211127.md "QMK v0.15.0 - 2021 Nov 27")
* [Past Breaking Changes](breaking_changes_history.md)
* C Development
diff --git a/docs/audio_driver.md b/docs/audio_driver.md
index 7cd5a98d9f4..81c33900740 100644
--- a/docs/audio_driver.md
+++ b/docs/audio_driver.md
@@ -57,14 +57,14 @@ This driver needs one Timer per enabled/used DAC channel, to trigger conversion;
Additionally, in the board config, you'll want to make changes to enable the DACs, GPT for Timers 6, 7 and 8:
-``` c
+```c
//halconf.h:
#define HAL_USE_DAC TRUE
#define HAL_USE_GPT TRUE
#include_next
```
-``` c
+```c
// mcuconf.h:
#include_next
#undef STM32_DAC_USE_DAC1_CH1
@@ -93,14 +93,14 @@ only needs one timer (GPTD6, Tim6) to trigger the DAC unit to do a conversion; t
Additionally, in the board config, you'll want to make changes to enable the DACs, GPT for Timer 6:
-``` c
+```c
//halconf.h:
#define HAL_USE_DAC TRUE
#define HAL_USE_GPT TRUE
#include_next
```
-``` c
+```c
// mcuconf.h:
#include_next
#undef STM32_DAC_USE_DAC1_CH1
@@ -153,7 +153,7 @@ This driver uses the ChibiOS-PWM system to produce a square-wave on specific out
The hardware directly toggles the pin via its alternate function. See your MCU's data-sheet for which pin can be driven by what timer - looking for TIMx_CHy and the corresponding alternate function.
A configuration example for the STM32F103C8 would be:
-``` c
+```c
//halconf.h:
#define HAL_USE_PWM TRUE
#define HAL_USE_PAL TRUE
@@ -161,7 +161,7 @@ A configuration example for the STM32F103C8 would be:
#include_next
```
-``` c
+```c
// mcuconf.h:
#include_next
#undef STM32_PWM_USE_TIM1
@@ -177,7 +177,7 @@ If we now target pin A8, looking through the data-sheet of the STM32F103C8, for
- TIM1_CH4 = PA11
with all this information, the configuration would contain these lines:
-``` c
+```c
//config.h:
#define AUDIO_PIN A8
#define AUDIO_PWM_DRIVER PWMD1
diff --git a/docs/breaking_changes.md b/docs/breaking_changes.md
index c5f4eec04d9..8bde6c88f77 100644
--- a/docs/breaking_changes.md
+++ b/docs/breaking_changes.md
@@ -2,10 +2,13 @@
This document describes QMK's Breaking Change process. A Breaking Change is any change which modifies how QMK behaves in a way that in incompatible or potentially dangerous. We limit these changes so that users can have confidence that updating their QMK tree will not break their keymaps.
+This also includes any keyboard moves within the repository.
+
The breaking change period is when we will merge PR's that change QMK in dangerous or unexpected ways. There is a built-in period of testing so we are confident that any problems caused are rare or unable to be predicted.
## What has been included in past Breaking Changes?
+* [2021 Nov 27](ChangeLog/20211127.md)
* [2021 Aug 28](ChangeLog/20210828.md)
* [2021 May 29](ChangeLog/20210529.md)
* [2021 Feb 27](ChangeLog/20210227.md)
@@ -17,16 +20,17 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## When is the next Breaking Change?
-The next Breaking Change is scheduled for August 28, 2021.
+The next Breaking Change is scheduled for February 26, 2022.
### Important Dates
-* [x] 2021 Aug 29 - `develop` is created. Each push to `master` is subsequently merged to `develop`
-* [ ] 2021 Oct 31 - `develop` closed to new PR's.
-* [ ] 2021 Oct 31 - Call for testers.
-* [ ] 2021 Nov 26 - `master` is locked, no PR's merged.
-* [ ] 2021 Nov 28 - Merge `develop` to `master`.
-* [ ] 2021 Nov 28 - `master` is unlocked. PR's can be merged again.
+* [x] 2021 Nov 27 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
+* [ ] 2022 Jan 31 - `develop` closed to new PR's.
+* [ ] 2022 Jan 31 - Call for testers.
+* [ ] 2022 Feb 12 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
+* [ ] 2022 Feb 24 - `master` is locked, no PR's merged.
+* [ ] 2022 Feb 26 - Merge `develop` to `master`.
+* [ ] 2022 Feb 26 - `master` is unlocked. PR's can be merged again.
## What changes will be included?
@@ -36,8 +40,10 @@ If you want your breaking change to be included in this round you need to create
Criteria for acceptance:
-* PR is complete and ready to merge
-* PR has a ChangeLog
+* The PR is complete and ready to merge
+* The PR has a ChangeLog file describing the changes under `/docs/Changelog/20220226`.
+ * This should be in Markdown format, with a name in the format `PR12345.md`, substituting the digits for your PR's ID.
+ * One strong recommendation that the ChangeLog document matches the PR description on GitHub, so as to ensure traceability.
# Checklists
@@ -68,6 +74,14 @@ This happens immediately after the previous `develop` branch is merged.
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
+## 2 Weeks Before Merge
+
+* `develop` is now closed to existing PR merges, only bugfixes for previous merges may be included
+* Post call for testers
+ * [ ] Discord
+ * [ ] GitHub PR
+ * [ ] https://reddit.com/r/olkb
+
## 1 Week Before Merge
* Announce that master will be closed from <2 Days Before> to
diff --git a/docs/breaking_changes_history.md b/docs/breaking_changes_history.md
index f78e97f1c7b..6b1b71b1fdf 100644
--- a/docs/breaking_changes_history.md
+++ b/docs/breaking_changes_history.md
@@ -2,6 +2,7 @@
This page links to all previous changelogs from the QMK Breaking Changes process.
+* [2021 Nov 27](ChangeLog/20211127.md) - version 0.15.0
* [2021 Aug 28](ChangeLog/20210828.md) - version 0.14.0
* [2021 May 29](ChangeLog/20210529.md) - version 0.13.0
* [2021 Feb 27](ChangeLog/20210227.md) - version 0.12.0
diff --git a/docs/chibios_upgrade_instructions.md b/docs/chibios_upgrade_instructions.md
index 40c2faafcfe..b0a71142a39 100644
--- a/docs/chibios_upgrade_instructions.md
+++ b/docs/chibios_upgrade_instructions.md
@@ -14,10 +14,10 @@ ChibiOS and ChibiOS-Contrib need to be updated in tandem -- the latter has a bra
* First time around this will take several hours
* Subsequent updates will be incremental only
* Tagging example (work out which version first!):
- * `git tag -a ver20.3.3 -m ver20.3.3 svn/tags/ver20.3.3`
- * `git push qmk ver20.3.3`
- * `git tag -a breaking_YYYY_qN -m breaking_YYYY_qN svn/tags/ver20.3.3`
- * `git push qmk breaking_YYYY_qN`
+ * `git tag -a ver20.3.4 -m ver20.3.4 svn/tags/ver20.3.4`
+ * `git push qmk ver20.3.4`
+ * `git tag -a develop_YYYY_qN -m develop_YYYY_qN svn/tags/ver20.3.4`
+ * `git push qmk develop_YYYY_qN`
## Getting ChibiOS-Contrib
@@ -30,8 +30,8 @@ ChibiOS and ChibiOS-Contrib need to be updated in tandem -- the latter has a bra
* `git checkout chibios-20.3.x`
* `git pull --ff-only`
* `git push origin chibios-20.3.x`
- * `git tag -a breaking_YYYY_qN -m breaking_YYYY_qN chibios-20.3.x`
- * `git push origin breaking_YYYY_qN`
+ * `git tag -a develop_YYYY_qN -m develop_YYYY_qN chibios-20.3.x`
+ * `git push origin develop_YYYY_qN`
## Updating submodules
@@ -42,15 +42,18 @@ ChibiOS and ChibiOS-Contrib need to be updated in tandem -- the latter has a bra
* `git checkout -b chibios-version-bump`
* `cd lib/chibios`
* `git fetch --all --tags --prune`
- * `git checkout breaking_YYYY_qN`
+ * `git checkout develop_YYYY_qN`
* `cd ../chibios-contrib`
* `git fetch --all --tags --prune`
- * `git checkout breaking_YYYY_qN`
+ * `git checkout develop_YYYY_qN`
+* Update ChibiOS configs within QMK
+ * `cd $QMK_FIRMWARE`
+ * `./util/chibios_conf_updater.sh`
* Build everything
* `cd $QMK_FIRMWARE`
* `qmk multibuild -j4`
* Make sure there are no errors
* Push to the repo
- * `git commit -am 'Update ChibiOS to XXXXXXXXX'`
+ * `git commit -am 'Update ChibiOS to 99.9.9'`
* `git push --set-upstream origin chibios-version-bump`
-* Make a PR to qmk_firmware with the new branch
\ No newline at end of file
+* Make a PR to qmk_firmware with the new branch
diff --git a/docs/cli_commands.md b/docs/cli_commands.md
index 8f5117633f7..520da06c41b 100644
--- a/docs/cli_commands.md
+++ b/docs/cli_commands.md
@@ -382,6 +382,33 @@ qmk format-c
qmk format-c -b branch_name
```
+## `qmk generate-compilation-database`
+
+**Usage**:
+
+```
+qmk generate-compilation-database [-kb KEYBOARD] [-km KEYMAP]
+```
+
+Creates a `compile_commands.json` file.
+
+Does your IDE/editor use a language server but doesn't _quite_ find all the necessary include files? Do you hate red squigglies? Do you wish your editor could figure out `#include QMK_KEYBOARD_H`? You might need a [compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html)! The qmk tool can build this for you.
+
+This command needs to know which keyboard and keymap to build. It uses the same configuration options as the `qmk compile` command: arguments, current directory, and config files.
+
+**Example:**
+
+```
+$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak
+$ qmk generate-compilation-database
+Ψ Making clean
+Ψ Gathering build instructions from make -n gh60/satan:colemak
+Ψ Found 50 compile commands
+Ψ Writing build database to /Users/you/src/qmk_firmware/compile_commands.json
+```
+
+Now open your dev environment and live a squiggly-free life.
+
## `qmk docs`
This command starts a local HTTP server which you can use for browsing or improving the docs. Default port is 8936.
diff --git a/docs/cli_development.md b/docs/cli_development.md
index 0f4f401b33b..62be3b3d8c4 100644
--- a/docs/cli_development.md
+++ b/docs/cli_development.md
@@ -14,7 +14,7 @@ If you intend to maintain keyboards and/or contribute to QMK, you can enable the
This will allow you to see all available subcommands.
**Note:** You will have to install additional requirements:
-```bash
+```
python3 -m pip install -r requirements-dev.txt
```
diff --git a/docs/compatible_microcontrollers.md b/docs/compatible_microcontrollers.md
index 2bf3b0ebb79..eb3e2c3e571 100644
--- a/docs/compatible_microcontrollers.md
+++ b/docs/compatible_microcontrollers.md
@@ -27,6 +27,7 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
* [STM32F103](https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html)
* [STM32F303](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html)
* [STM32F401](https://www.st.com/en/microcontrollers-microprocessors/stm32f401.html)
+ * [STM32F405](https://www.st.com/en/microcontrollers-microprocessors/stm32f405-415.html)
* [STM32F407](https://www.st.com/en/microcontrollers-microprocessors/stm32f407-417.html)
* [STM32F411](https://www.st.com/en/microcontrollers-microprocessors/stm32f411.html)
* [STM32F446](https://www.st.com/en/microcontrollers-microprocessors/stm32f446.html)
@@ -36,13 +37,24 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
* [STM32L422](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x2.html)
* [STM32L433](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)
* [STM32L443](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)
+
+ ### WestBerryTech (WB32)
+
+ * [WB32F3G71xx](http://www.westberrytech.com)
### NXP (Kinetis)
* [MKL26Z64](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/kl-series-cortex-m0-plus/kinetis-kl2x-72-96-mhz-usb-ultra-low-power-microcontrollers-mcus-based-on-arm-cortex-m0-plus-core:KL2x)
* [MK20DX128](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-50-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-based-on-arm-cortex-m4-core:K20_50)
* [MK20DX256](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-72-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-mcus-based-on-arm-cortex-m4-core:K20_72)
+ * [MK66FX1M0](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k6x-ethernet/kinetis-k66-180-mhz-dual-high-speed-full-speed-usbs-2mb-flash-microcontrollers-mcus-based-on-arm-cortex-m4-core:K66_180)
## Atmel ATSAM
There is limited support for one of Atmel's ATSAM microcontrollers, that being the [ATSAMD51J18A](https://www.microchip.com/wwwproducts/en/ATSAMD51J18A) used by the [Massdrop keyboards](https://github.com/qmk/qmk_firmware/tree/master/keyboards/massdrop).
+
+## RISC-V
+
+### GigaDevice
+
+[ChibiOS-Contrib](https://github.com/ChibiOS/ChibiOS-Contrib) has support for the GigaDevice [GD32VF103 series](https://www.gigadevice.com/products/microcontrollers/gd32/risc-v/mainstream-line/gd32vf103-series/) microcontrollers and provides configurations for the [SiPeed Longan Nano](https://longan.sipeed.com/en/) development board that uses this microcontroller. It is largely pin and feature compatible with STM32F103 and STM32F303 microcontrollers.
\ No newline at end of file
diff --git a/docs/config_options.md b/docs/config_options.md
index cfbe39f0d32..b661b55ee0d 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -206,7 +206,7 @@ If you define these options you will enable the associated feature, which may in
* `#define TAP_CODE_DELAY 100`
* Sets the delay between `register_code` and `unregister_code`, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
* `#define TAP_HOLD_CAPS_DELAY 80`
- * Sets the delay for Tap Hold keys (`LT`, `MT`) when using `KC_CAPSLOCK` keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher.
+ * Sets the delay for Tap Hold keys (`LT`, `MT`) when using `KC_CAPS_LOCK` keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher.
* `#define KEY_OVERRIDE_REPEAT_DELAY 500`
* Sets the key repeat interval for [key overrides](feature_key_overrides.md).
@@ -407,7 +407,7 @@ Use these to enable or disable building certain features. The more you have enab
* `MAGIC_ENABLE`
* MAGIC actions (BOOTMAGIC without the boot)
* `BOOTMAGIC_ENABLE`
- * Virtual DIP switch configuration
+ * Enable Bootmagic Lite
* `MOUSEKEY_ENABLE`
* Mouse keys
* `EXTRAKEY_ENABLE`
@@ -446,6 +446,10 @@ Use these to enable or disable building certain features. The more you have enab
* Forces the keyboard to wait for a USB connection to be established before it starts up
* `NO_USB_STARTUP_CHECK`
* Disables usb suspend check after keyboard startup. Usually the keyboard waits for the host to wake it up before any tasks are performed. This is useful for split keyboards as one half will not get a wakeup call but must send commands to the master.
+* `DEFERRED_EXEC_ENABLE`
+ * Enables deferred executor support -- timed delays before callbacks are invoked. See [deferred execution](custom_quantum_functions.md#deferred-execution) for more information.
+* `DYNAMIC_TAPPING_TERM_ENABLE`
+ * Allows to configure the global tapping term on the fly.
## USB Endpoint Limitations
diff --git a/docs/configurator_default_keymaps.md b/docs/configurator_default_keymaps.md
index 30f9fa72f32..d2b14ec4110 100644
--- a/docs/configurator_default_keymaps.md
+++ b/docs/configurator_default_keymaps.md
@@ -20,7 +20,7 @@ Keymaps in this directory require four key-value pairs:
Additionally, most keymaps contain a `commit` key. This key is not consumed by the API that back-stops QMK Configurator, but is used by Configurator's maintainers to tell which version of a keymap was used to create the JSON keymap in this repository. The value is the SHA of the last commit to modify a board's default `keymap.c` in the `qmk_firmware` repository. The SHA is found by checking out [the `master` branch of the `qmk/qmk_firmware` repository](https://github.com/qmk/qmk_firmware/tree/master/) and running `git log -1 --pretty=oneline -- keyboards//keymaps/default/keymap.c` (use `keymap.json` if the keyboard in question has this file instead), which should return something similar to:
-```shell
+```
f14629ed1cd7c7ec9089604d64f29a99981558e8 Remove/migrate action_get_macro()s from default keymaps (#5625)
```
@@ -31,7 +31,7 @@ In this example, `f14629ed1cd7c7ec9089604d64f29a99981558e8` is the value that sh
If one wished to add a default keymap for the H87a by Hineybush, one would run the `git log` command above against the H87a's default keymap in `qmk_firmware`:
-```shell
+```
user ~/qmk_firmware (master)
$ git log -1 --pretty=oneline master -- keyboards/hineybush/h87a/keymaps/default/keymap.c
ef8878fba5d3786e3f9c66436da63a560cd36ac9 Hineybush h87a lock indicators (#8237)
@@ -46,7 +46,7 @@ Now that we have the commit hash, we need the keymap (edited for readability):
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
@@ -74,7 +74,7 @@ The default keymap uses the `LAYOUT_all` macro, so that will be the value of the
"layout": "LAYOUT_all",
"layers": [
[
- "KC_ESC", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_PSCR", "KC_SLCK", "KC_PAUS",
+ "KC_ESC", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_PSCR", "KC_SCRL", "KC_PAUS",
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_BSPC", "KC_INS", "KC_HOME", "KC_PGUP",
"KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_DEL", "KC_END", "KC_PGDN",
"KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_NUHS", "KC_ENT",
diff --git a/docs/contributing.md b/docs/contributing.md
index 1d68d22d9f0..eb033d167fd 100644
--- a/docs/contributing.md
+++ b/docs/contributing.md
@@ -105,7 +105,7 @@ enum my_keycodes {
Before opening a pull request, you can preview your changes if you have set up the development environment by running this command from the `qmk_firmware/` folder:
- ./bin/qmk docs
+ qmk docs
or if you only have Python 3 installed:
diff --git a/docs/custom_matrix.md b/docs/custom_matrix.md
index cfa900a33d3..8f6878f94a6 100644
--- a/docs/custom_matrix.md
+++ b/docs/custom_matrix.md
@@ -15,7 +15,7 @@ The reasons to use this feature include:
Implementing custom matrix usually involves compilation of an additional source file. It is recommended that for consistency, this file is called `matrix.c`.
Add a new file to your keyboard directory:
-```text
+```
keyboards//matrix.c
```
diff --git a/docs/custom_quantum_functions.md b/docs/custom_quantum_functions.md
index 463366ff763..dd1654bd298 100644
--- a/docs/custom_quantum_functions.md
+++ b/docs/custom_quantum_functions.md
@@ -149,7 +149,7 @@ This is useful for setting up stuff that you may need elsewhere, but isn't hardw
* GPIO pin initialisation: `void matrix_init_pins(void)`
* This needs to perform the low-level initialisation of all row and column pins. By default this will initialise the input/output state of each of the GPIO pins listed in `MATRIX_ROW_PINS` and `MATRIX_COL_PINS`, based on whether or not the keyboard is set up for `ROW2COL`, `COL2ROW`, or `DIRECT_PINS`. Should the keyboard designer override this function, no initialisation of pin state will occur within QMK itself, instead deferring to the keyboard's override.
* `COL2ROW`-based row reads: `void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)`
-* `ROW2COL`-based column reads: `void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)`
+* `ROW2COL`-based column reads: `void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter)`
* `DIRECT_PINS`-based reads: `void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)`
* These three functions need to perform the low-level retrieval of matrix state of relevant input pins, based on the matrix type. Only one of the functions should be implemented, if needed. By default this will iterate through `MATRIX_ROW_PINS` and `MATRIX_COL_PINS`, configuring the inputs and outputs based on whether or not the keyboard is set up for `ROW2COL`, `COL2ROW`, or `DIRECT_PINS`. Should the keyboard designer override this function, no manipulation of matrix GPIO pin state will occur within QMK itself, instead deferring to the keyboard's override.
@@ -405,3 +405,69 @@ And you're done. The RGB layer indication will only work if you want it to. And
* Keymap: `void eeconfig_init_user(void)`, `uint32_t eeconfig_read_user(void)` and `void eeconfig_update_user(uint32_t val)`
The `val` is the value of the data that you want to write to EEPROM. And the `eeconfig_read_*` function return a 32 bit (DWORD) value from the EEPROM.
+
+### Deferred Execution :id=deferred-execution
+
+QMK has the ability to execute a callback after a specified period of time, rather than having to manually manage timers.
+
+#### Deferred executor callbacks
+
+All _deferred executor callbacks_ have a common function signature and look like:
+
+```c
+uint32_t my_callback(uint32_t trigger_time, void *cb_arg) {
+ /* do something */
+ bool repeat = my_deferred_functionality();
+ return repeat ? 500 : 0;
+}
+```
+
+The first argument `trigger_time` is the intended time of execution. If other delays prevent executing at the exact trigger time, this allows for "catch-up" or even skipping intervals, depending on the required behaviour.
+
+The second argument `cb_arg` is the same argument passed into `defer_exec()` below, and can be used to access state information from the original call context.
+
+The return value is the number of milliseconds to use if the function should be repeated -- if the callback returns `0` then it's automatically unregistered. In the example above, a hypothetical `my_deferred_functionality()` is invoked to determine if the callback needs to be repeated -- if it does, it reschedules for a `500` millisecond delay, otherwise it informs the deferred execution background task that it's done, by returning `0`.
+
+?> Note that the returned delay will be applied to the intended trigger time, not the time of callback invocation. This allows for generally consistent timing even in the face of occasional late execution.
+
+#### Deferred executor registration
+
+Once a callback has been defined, it can be scheduled using the following API:
+
+```c
+deferred_token my_token = defer_exec(1500, my_callback, NULL);
+```
+
+The first argument is the number of milliseconds to wait until executing `my_callback` -- in the case above, `1500` milliseconds, or 1.5 seconds.
+
+The third parameter is the `cb_arg` that gets passed to the callback at the point of execution. This value needs to be valid at the time the callback is invoked -- a local function value will be destroyed before the callback is executed and should not be used. If this is not required, `NULL` should be used.
+
+The return value is a `deferred_token` that can consequently be used to cancel the deferred executor callback before it's invoked. If a failure occurs, the returned value will be `INVALID_DEFERRED_TOKEN`. Usually this will be as a result of supplying `0` to the delay, or a `NULL` for the callback. The other failure case is if there are too many deferred executions "in flight" -- this can be increased by changing the limit, described below.
+
+#### Extending a deferred execution
+
+The `deferred_token` returned by `defer_exec()` can be used to extend a the duration a pending execution waits before it gets invoked:
+```c
+// This will re-delay my_token's future execution such that it is invoked 800ms after the current time
+extend_deferred_exec(my_token, 800);
+```
+
+#### Cancelling a deferred execution
+
+The `deferred_token` returned by `defer_exec()` can be used to cancel a pending execution before it gets invoked:
+```c
+// This will cancel my_token's future execution
+cancel_deferred_exec(my_token);
+```
+
+Once a token has been canceled, it should be considered invalid. Reusing the same token is not supported.
+
+#### Deferred callback limits
+
+There are a maximum number of deferred callbacks that can be scheduled, controlled by the value of the define `MAX_DEFERRED_EXECUTORS`.
+
+If registrations fail, then you can increase this value in your keyboard or keymap `config.h` file, for example to 16 instead of the default 8:
+
+```c
+#define MAX_DEFERRED_EXECUTORS 16
+```
diff --git a/docs/de/cli.md b/docs/de/cli.md
index 7dc02d505b6..259aeecf754 100644
--- a/docs/de/cli.md
+++ b/docs/de/cli.md
@@ -51,25 +51,6 @@ Wir suchen nach Freiwilligen, die ein `qmk`-Package für weitere Betriebssysteme
* Installiere mit einem [virtualenv](https://virtualenv.pypa.io/en/latest/).
* Weise den User an, die Umgebungs-Variable `QMK_HOME` zu setzen, um die Firmware-Quelle anders einzustellen als `~/qmk_firmware`.
-# Lokale CLI
-
-Wenn Du die globale CLI nicht verwenden möchtest, beinhaltet `qmk_firmware` auch eine lokale CLI. Du kannst sie hier finden: `qmk_firmware/bin/qmk`. Du kannst den `qmk`-Befehl aus irgendeinem Datei-Verzeichnis ausführen und es wird immer auf dieser Kopie von `qmk_firmware` arbeiten.
-
-**Beispiel**:
-
-```
-$ ~/qmk_firmware/bin/qmk hello
-Ψ Hello, World!
-```
-
-## Einschränkungen der lokalen CLI
-
-Hier ein Vergleich mit der globalen CLI:
-
-* Die lokale CLI unterstützt kein `qmk setup` oder `qmk clone`.
-* Die lokale CLI arbeitet immer innerhalb der selben `qmk_firmware`-Verzeichnisstruktur, auch wenn Du mehrere Repositories geklont hast.
-* Die lokale CLI läuft nicht in einer virtualenv. Daher ist es möglich, dass Abhängigkeiten (dependencies) miteinander in Konflikt kommen/stehen.
-
# CLI-Befehle
## `qmk compile`
diff --git a/docs/driver_installation_zadig.md b/docs/driver_installation_zadig.md
index 9155e56e374..003629ba9a0 100644
--- a/docs/driver_installation_zadig.md
+++ b/docs/driver_installation_zadig.md
@@ -93,6 +93,7 @@ The device name here is the name that appears in Zadig, and may not be what the
|`usbasploader`|USBasp |`16C0:05DC` |libusbK|
|`apm32-dfu` |APM32 DFU ISP Mode |`314B:0106` |WinUSB |
|`stm32-dfu` |STM32 BOOTLOADER |`0483:DF11` |WinUSB |
+|`gd32v-dfu` |GD32V BOOTLOADER |`28E9:0189` |WinUSB |
|`kiibohd` |Kiibohd DFU Bootloader |`1C11:B007` |WinUSB |
|`stm32duino` |Maple 003 |`1EAF:0003` |WinUSB |
|`qmk-hid` |(keyboard name) Bootloader |`03EB:2067` |HidUsb |
diff --git a/docs/es/hardware_drivers.md b/docs/es/hardware_drivers.md
index e0a9736068c..788de2c5efc 100644
--- a/docs/es/hardware_drivers.md
+++ b/docs/es/hardware_drivers.md
@@ -18,10 +18,6 @@ Soporte para direccionar pines en el ProMicro por su nombre Arduino en lugar de
Soporte para pantallas OLED basadas en SSD1306. Para obtener más información consulta la página de [Característica de Controlador OLED](feature_oled_driver.md).
-## uGFX
-
-Puedes hacer uso de uGFX dentro de QMK para manejar LCDs de caracteres y gráficos, matrices de LED, OLED, TFT, y otras tecnologías de visualización. Esto necesita ser mejor documentado. Si estás tratando de hacer esto y leer el código no ayuda por favor [abre una issue](https://github.com/qmk/qmk_firmware/issues/new) y podemos ayudarte por el proceso.
-
## WS2812 (Solo AVR)
Soporte para LEDs WS2811/WS2812{a,b,c}. Para obtener más información consulta la página de [Luz RGB](feature_rgblight.md).
diff --git a/docs/es/hardware_keyboard_guidelines.md b/docs/es/hardware_keyboard_guidelines.md
index a505cc5ce13..298a3b7ce76 100644
--- a/docs/es/hardware_keyboard_guidelines.md
+++ b/docs/es/hardware_keyboard_guidelines.md
@@ -142,8 +142,6 @@ El año debe ser el primer año en que se crea el archivo. Si el trabajo se hizo
El núcleo de QMC está licenciado bajo la [GNU General Public License](https://www.gnu.org/licenses/licenses.en.html). Si estás enviando binarios para los procesadores AVR puedes elegir cualquiera [GPLv2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) o [GPLv3](https://www.gnu.org/licenses/gpl.html). Si estás enviando binarios para ARM procesadores debes elegir [GPL Versión 3](https://www.gnu.org/licenses/gpl.html) para cumplir con los [ChibiOS](https://www.chibios.org) licencia GPLv3.
-Si tu teclado hace uso de la [uGFX](https://gfx.io) características dentro de QMK debes cumplir con la [Licencia de uGFX](https://ugfx.io/license.html), que requiere una licencia comercial separada antes de vender un dispositivo que contiene uGFX.
-
## Detalles técnicos
Si estás buscando más información sobre cómo hacer que su teclado funcione con QMK, [echa un vistazo a la sección hardware](hardware.md)!
diff --git a/docs/faq_debug.md b/docs/faq_debug.md
index 1afa38a6243..28b8c817594 100644
--- a/docs/faq_debug.md
+++ b/docs/faq_debug.md
@@ -62,7 +62,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
```
Example output
-```text
+```
Waiting for device:.......
Listening:
KL: kc: 169, col: 0, row: 0, pressed: 1
@@ -82,7 +82,7 @@ When testing performance issues, it can be useful to know the frequency at which
```
Example output
-```text
+```
> matrix scan frequency: 315
> matrix scan frequency: 313
> matrix scan frequency: 316
diff --git a/docs/faq_keymap.md b/docs/faq_keymap.md
index dbeadba7100..01ded4f2319 100644
--- a/docs/faq_keymap.md
+++ b/docs/faq_keymap.md
@@ -19,7 +19,7 @@ There are 3 standard keyboard layouts in use around the world- ANSI, ISO, and JI
Sometimes, for readability's sake, it's useful to define custom names for some keycodes. People often define custom names using `#define`. For example:
```c
-#define FN_CAPS LT(_FL, KC_CAPSLOCK)
+#define FN_CAPS LT(_FL, KC_CAPS)
#define ALT_TAB LALT(KC_TAB)
```
@@ -38,8 +38,8 @@ As a quick fix try holding down `Space`+`Backspace` while you plug in your keybo
The key found on most modern keyboards that is located between `KC_RGUI` and `KC_RCTL` is actually called `KC_APP`. This is because when that key was invented there was already a key named `MENU` in the relevant standards, so MS chose to call that the `APP` key.
-## `KC_SYSREQ` Isn't Working
-Use keycode for Print Screen(`KC_PSCREEN` or `KC_PSCR`) instead of `KC_SYSREQ`. Key combination of 'Alt + Print Screen' is recognized as 'System request'.
+## `KC_SYSTEM_REQUEST` Isn't Working
+Use keycode for Print Screen (`KC_PRINT_SCREEN`/`KC_PSCR`) instead of `KC_SYSTEM_REQUEST`. Key combination of 'Alt + Print Screen' is recognized as 'System request'.
See [issue #168](https://github.com/tmk/tmk_keyboard/issues/168) and
* https://en.wikipedia.org/wiki/Magic_SysRq_key
@@ -47,7 +47,7 @@ See [issue #168](https://github.com/tmk/tmk_keyboard/issues/168) and
## Power Keys Aren't Working
-Somewhat confusingly, there are two "Power" keycodes in QMK: `KC_POWER` in the Keyboard/Keypad HID usage page, and `KC_SYSTEM_POWER` (or `KC_PWR`) in the Consumer page.
+Somewhat confusingly, there are two "Power" keycodes in QMK: `KC_KB_POWER` in the Keyboard/Keypad HID usage page, and `KC_SYSTEM_POWER` (or `KC_PWR`) in the Consumer page.
The former is only recognized on macOS, while the latter, `KC_SLEP` and `KC_WAKE` are supported by all three major operating systems, so it is recommended to use those instead. Under Windows, these keys take effect immediately, however on macOS they must be held down until a dialog appears.
@@ -57,7 +57,7 @@ https://github.com/tmk/tmk_keyboard/issues/67
## Modifier/Layer Stuck
Modifier keys or layers can be stuck unless layer switching is configured properly.
-For Modifier keys and layer actions you have to place `KC_TRANS` on same position of destination layer to unregister the modifier key or return to previous layer on release event.
+For Modifier keys and layer actions you have to place `KC_TRNS` on same position of destination layer to unregister the modifier key or return to previous layer on release event.
* https://github.com/tmk/tmk_core/blob/master/doc/keymap.md#31-momentary-switching
* https://geekhack.org/index.php?topic=57008.msg1492604#msg1492604
@@ -75,7 +75,7 @@ This feature is for *mechanical lock switch* like [this Alps one](https://deskth
After enabling this feature use keycodes `KC_LCAP`, `KC_LNUM` and `KC_LSCR` in your keymap instead.
-Old vintage mechanical keyboards occasionally have lock switches but modern ones don't have. ***You don't need this feature in most case and just use keycodes `KC_CAPS`, `KC_NLCK` and `KC_SLCK`.***
+Old vintage mechanical keyboards occasionally have lock switches but modern ones don't have. ***You don't need this feature in most case and just use keycodes `KC_CAPS`, `KC_NUM` and `KC_SCRL`.***
## Input Special Characters Other Than ASCII like Cédille 'Ç'
diff --git a/docs/faq_misc.md b/docs/faq_misc.md
index 9ab2b69a809..9e34a048156 100644
--- a/docs/faq_misc.md
+++ b/docs/faq_misc.md
@@ -36,7 +36,7 @@ Size after:
can retry, loading that one
- Some of the options you might specify in your keyboard's Makefile
consume extra memory; watch out for BOOTMAGIC_ENABLE,
- MOUSEKEY_ENABLE, EXTRAKEY_ENABLE, CONSOLE_ENABLE, API_SYSEX_ENABLE
+ MOUSEKEY_ENABLE, EXTRAKEY_ENABLE, CONSOLE_ENABLE
- DFU tools do /not/ allow you to write into the bootloader (unless
you throw in an extra fruit salad of options), so there is little risk
there.
@@ -49,10 +49,6 @@ First you have to compile firmware with the build option `NKRO_ENABLE` in **Make
Try `Magic` **N** command(`LShift+RShift+N` by default) when **NKRO** still doesn't work. You can use this command to toggle between **NKRO** and **6KRO** mode temporarily. In some situations **NKRO** doesn't work and you will need to switch to **6KRO** mode, in particular when you are in BIOS.
-If your firmware was built with `BOOTMAGIC_ENABLE` you need to turn its switch on by `BootMagic` **N** command(`Space+N` by default). This setting is stored in EEPROM and kept over power cycles.
-
-https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch
-
## TrackPoint Needs Reset Circuit (PS/2 Mouse Support)
Without reset circuit you will have inconsistent result due to improper initialization of the hardware. See circuit schematic of TPM754:
diff --git a/docs/feature_auto_shift.md b/docs/feature_auto_shift.md
index ec7eeaaa0ca..99b0ca3c8a3 100644
--- a/docs/feature_auto_shift.md
+++ b/docs/feature_auto_shift.md
@@ -26,20 +26,26 @@ down will repeat the shifted key, though this can be disabled with
once then immediately (within `TAPPING_TERM`) hold it down again (this works
with the shifted value as well if auto-repeat is disabled).
+There are also the `get_auto_shift_repeat` and `get_auto_shift_no_auto_repeat`
+functions for more granular control. Neither will have an effect unless
+`AUTO_SHIFT_REPEAT_PER_KEY` or `AUTO_SHIFT_NO_AUTO_REPEAT_PER_KEY` respectively
+are defined.
+
## Are There Limitations to Auto Shift?
Yes, unfortunately.
-You will have characters that are shifted when you did not intend on shifting, and
-other characters you wanted shifted, but were not. This simply comes down to
-practice. As we get in a hurry, we think we have hit the key long enough for a
-shifted version, but we did not. On the other hand, we may think we are tapping
-the keys, but really we have held it for a little longer than anticipated.
-
-Additionally, with keyrepeat the desired shift state can get mixed up. It will
-always 'belong' to the last key pressed. For example, keyrepeating a capital
-and then tapping something lowercase (whether or not it's an Auto Shift key)
-will result in the capital's *key* still being held, but shift not.
+1. You will have characters that are shifted when you did not intend on shifting, and
+ other characters you wanted shifted, but were not. This simply comes down to
+ practice. As we get in a hurry, we think we have hit the key long enough for a
+ shifted version, but we did not. On the other hand, we may think we are tapping
+ the keys, but really we have held it for a little longer than anticipated.
+2. Additionally, with keyrepeat the desired shift state can get mixed up. It will
+ always 'belong' to the last key pressed. For example, keyrepeating a capital
+ and then tapping something lowercase (whether or not it's an Auto Shift key)
+ will result in the capital's *key* still being held, but shift not.
+3. Auto Shift does not apply to Tap Hold keys. For automatic shifting of Tap Hold
+ keys see [Retro Shift](#retro-shift).
## How Do I Enable Auto Shift?
@@ -96,6 +102,34 @@ quicker than normal and you will be set.
?> Auto Shift has three special keys that can help you get this value right very quick. See "Auto Shift Setup" for more details!
+For more granular control of this feature, you can add the following to your `config.h`:
+
+```c
+#define AUTO_SHIFT_TIMEOUT_PER_KEY
+```
+
+You can then add the following function to your keymap:
+
+```c
+uint16_t get_autoshift_timeout(uint16_t keycode, keyrecord_t *record) {
+ switch(keycode) {
+ case AUTO_SHIFT_NUMERIC:
+ return 2 * get_generic_autoshift_timeout();
+ case AUTO_SHIFT_SPECIAL:
+ return get_generic_autoshift_timeout() + 50;
+ case AUTO_SHIFT_ALPHA:
+ default:
+ return get_generic_autoshift_timeout();
+ }
+}
+```
+
+Note that you cannot override individual keys that are in one of those groups
+if you are using them; trying to add a case for `KC_A` in the above example will
+not compile as `AUTO_SHIFT_ALPHA` is there. A possible solution is a second switch
+above to handle individual keys with no default case and only referencing the
+groups in the below fallback switch.
+
### NO_AUTO_SHIFT_SPECIAL (simple define)
Do not Auto Shift special keys, which include -\_, =+, [{, ]}, ;:, '", ,<, .>,
@@ -109,11 +143,24 @@ Do not Auto Shift numeric keys, zero through nine.
Do not Auto Shift alpha characters, which include A through Z.
-### Auto Shift Per Key
+### Auto Shift Per Key
-This is a function that allows you to determine which keys shold be autoshifted, much like the tap-hold keys.
+There are functions that allows you to determine which keys shold be autoshifted, much like the tap-hold keys.
-The default function looks like this:
+The first of these, used to simply add a key to Auto Shift, is `get_custom_auto_shifted_key`:
+
+```c
+bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {
+ switch(keycode) {
+ case KC_DOT:
+ return true;
+ default:
+ return false;
+ }
+}
+```
+
+For more granular control, there is `get_auto_shifted_key`. The default function looks like this:
```c
bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {
@@ -127,13 +174,14 @@ bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {
# ifndef NO_AUTO_SHIFT_SPECIAL
case KC_TAB:
case KC_MINUS ... KC_SLASH:
- case KC_NONUS_BSLASH:
+ case KC_NONUS_BACKSLASH:
# endif
return true;
}
- return false;
+ return get_custom_auto_shifted_key(keycode, record);
}
```
+
This functionality is enabled by default, and does not need a define.
### AUTO_SHIFT_REPEAT (simple define)
@@ -144,6 +192,106 @@ Enables keyrepeat.
Disables automatically keyrepeating when `AUTO_SHIFT_TIMEOUT` is exceeded.
+## Custom Shifted Values
+
+Especially on small keyboards, the default shifted value for many keys is not
+optimal. To provide more customizability, there are two user-definable
+functions, `autoshift_press/release_user`. These register or unregister the
+correct value for the passed key. Below is an example adding period to Auto
+Shift and making its shifted value exclamation point. Make sure to use weak
+mods - setting real would make any keys following it use their shifted values
+as if you were holding the key. Clearing of modifiers is handled by Auto Shift,
+and the OS-sent shift value if keyrepeating multiple keys is always that of
+the last key pressed (whether or not it's an Auto Shift key).
+
+You can also have non-shifted keys for the shifted values (or even no shifted
+value), just don't set a shift modifier!
+
+```c
+bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {
+ switch(keycode) {
+ case KC_DOT:
+ return true;
+ default:
+ return false;
+ }
+}
+
+void autoshift_press_user(uint16_t keycode, bool shifted, keyrecord_t *record) {
+ switch(keycode) {
+ case KC_DOT:
+ register_code16((!shifted) ? KC_DOT : KC_EXLM);
+ break;
+ default:
+ if (shifted) {
+ add_weak_mods(MOD_BIT(KC_LSFT));
+ }
+ // & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift
+ register_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode);
+ }
+}
+
+void autoshift_release_user(uint16_t keycode, bool shifted, keyrecord_t *record) {
+ switch(keycode) {
+ case KC_DOT:
+ unregister_code16((!shifted) ? KC_DOT : KC_EXLM);
+ break;
+ default:
+ // & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift
+ // The IS_RETRO check isn't really necessary here, always using
+ // keycode & 0xFF would be fine.
+ unregister_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode);
+ }
+}
+```
+
+## Retro Shift
+
+Holding and releasing a Tap Hold key without pressing another key will ordinarily
+result in only the hold. With `retro shift` enabled this action will instead
+produce a shifted version of the tap keycode on release.
+
+It does not require [Retro Tapping](tap_hold.md#retro-tapping) to be enabled, and
+if both are enabled the state of `retro tapping` will only apply if the tap keycode
+is not matched by Auto Shift. `RETRO_TAPPING_PER_KEY` and its corresponding
+function, however, are checked before `retro shift` is applied.
+
+To enable `retro shift`, add the following to your `config.h`:
+
+```c
+#define RETRO_SHIFT
+```
+
+If `RETRO_SHIFT` is defined to a value, hold times greater than that value will
+not produce a tap on release for Mod Taps, and instead triggers the hold action.
+This enables modifiers to be held for combining with mouse clicks without
+generating taps on release. For example:
+
+```c
+#define RETRO_SHIFT 500
+```
+
+This value (if set) must be greater than one's `TAPPING_TERM`, as the key press
+must be designated as a 'hold' by `process_tapping` before we send the modifier.
+There is no such limitation in regards to `AUTO_SHIFT_TIMEOUT` for normal keys.
+
+### Retro Shift and Tap Hold Configurations
+
+Tap Hold Configurations work a little differently when using Retro Shift.
+Referencing `TAPPING_TERM` makes little sense, as holding longer would result in
+shifting one of the keys.
+
+`IGNORE_MOD_TAP_INTERRUPT` changes *only* rolling from a mod tap (releasing it
+first), sending both keys instead of the modifier on the second. Its effects on
+nested presses are ignored.
+
+As nested taps were changed to act as though `PERMISSIVE_HOLD` is set unless only
+`IGNORE_MOD_TAP_INTERRUPT` is (outside of Retro Shift), and Retro Shift ignores
+`IGNORE_MOD_TAP_INTERRUPT`, `PERMISSIVE_HOLD` has no effect on Mod Taps.
+
+Nested taps will *always* act as though the `TAPPING_TERM` was exceeded for both
+Mod and Layer Tap keys.
+
## Using Auto Shift Setup
This will enable you to define three keys temporarily to increase, decrease and report your `AUTO_SHIFT_TIMEOUT`.
diff --git a/docs/feature_backlight.md b/docs/feature_backlight.md
index d47ecc68242..79782cf5649 100644
--- a/docs/feature_backlight.md
+++ b/docs/feature_backlight.md
@@ -8,7 +8,7 @@ The MCU can only supply so much current to its GPIO pins. Instead of powering th
Most keyboards have backlighting enabled by default if they support it, but if it is not working for you, check that your `rules.mk` includes the following:
-```makefile
+```make
BACKLIGHT_ENABLE = yes
```
@@ -54,7 +54,7 @@ If backlight breathing is enabled (see below), the following functions are also
To select which driver to use, configure your `rules.mk` with the following:
-```makefile
+```make
BACKLIGHT_DRIVER = software
```
@@ -87,7 +87,7 @@ This functionality is configured at the keyboard level with the `BACKLIGHT_ON_ST
The `pwm` driver is configured by default, however the equivalent setting within `rules.mk` would be:
-```makefile
+```make
BACKLIGHT_DRIVER = pwm
```
@@ -143,7 +143,7 @@ The breathing effect is the same as in the hardware PWM implementation.
While still in its early stages, ARM backlight support aims to eventually have feature parity with AVR. The `pwm` driver is configured by default, however the equivalent setting within `rules.mk` would be:
-```makefile
+```make
BACKLIGHT_DRIVER = pwm
```
@@ -167,7 +167,7 @@ Currently only hardware PWM is supported, not timer assisted, and does not provi
In this mode, PWM is "emulated" while running other keyboard tasks. It offers maximum hardware compatibility without extra platform configuration. The tradeoff is the backlight might jitter when the keyboard is busy. To enable, add this to your `rules.mk`:
-```makefile
+```make
BACKLIGHT_DRIVER = software
```
@@ -188,7 +188,7 @@ To activate multiple backlight pins, add something like this to your `config.h`,
If none of the above drivers apply to your board (for example, you are using a separate IC to control the backlight), you can implement a custom backlight driver using this simple API provided by QMK. To enable, add this to your `rules.mk`:
-```makefile
+```make
BACKLIGHT_DRIVER = custom
```
diff --git a/docs/feature_bluetooth.md b/docs/feature_bluetooth.md
index 08e5f24ac55..fdf19c10774 100644
--- a/docs/feature_bluetooth.md
+++ b/docs/feature_bluetooth.md
@@ -4,10 +4,10 @@
Currently Bluetooth support is limited to AVR based chips. For Bluetooth 2.1, QMK has support for RN-42 modules. For more recent BLE protocols, currently only the Adafruit Bluefruit SPI Friend is directly supported. BLE is needed to connect to iOS devices. Note iOS does not support mouse input.
-|Board |Bluetooth Protocol |Connection Type |rules.mk |Bluetooth Chip|
-|----------------------------------------------------------------|----------------------------|----------------|---------------------------|--------------|
-|Roving Networks RN-42 (Sparkfun Bluesmirf) |Bluetooth Classic | UART |`BLUETOOTH = RN42` | RN-42 |
-|[Bluefruit LE SPI Friend](https://www.adafruit.com/product/2633)|Bluetooth Low Energy | SPI |`BLUETOOTH = AdafruitBLE` | nRF51822 |
+|Board |Bluetooth Protocol |Connection Type|rules.mk |Bluetooth Chip|
+|----------------------------------------------------------------|--------------------|---------------|--------------------------------|--------------|
+|Roving Networks RN-42 (Sparkfun Bluesmirf) |Bluetooth Classic |UART |`BLUETOOTH_DRIVER = RN42` |RN-42 |
+|[Bluefruit LE SPI Friend](https://www.adafruit.com/product/2633)|Bluetooth Low Energy|SPI |`BLUETOOTH_DRIVER = AdafruitBLE`|nRF51822 |
Not Supported Yet but possible:
* [Bluefruit LE UART Friend](https://www.adafruit.com/product/2479). [Possible tmk implementation found in](https://github.com/tmk/tmk_keyboard/issues/514)
@@ -17,22 +17,23 @@ Not Supported Yet but possible:
### Adafruit BLE SPI Friend
Currently The only bluetooth chipset supported by QMK is the Adafruit Bluefruit SPI Friend. It's a Nordic nRF5182 based chip running Adafruit's custom firmware. Data is transmitted via Adafruit's SDEP over Hardware SPI. The [Feather 32u4 Bluefruit LE](https://www.adafruit.com/product/2829) is supported as it's an AVR mcu connected via SPI to the Nordic BLE chip with Adafruit firmware. If Building a custom board with the SPI friend it would be easiest to just use the pin selection that the 32u4 feather uses but you can change the pins in the config.h options with the following defines:
-* #define AdafruitBleResetPin D4
-* #define AdafruitBleCSPin B4
-* #define AdafruitBleIRQPin E6
+* `#define ADAFRUIT_BLE_RST_PIN D4`
+* `#define ADAFRUIT_BLE_CS_PIN B4`
+* `#define ADAFRUIT_BLE_IRQ_PIN E6`
A Bluefruit UART friend can be converted to an SPI friend, however this [requires](https://github.com/qmk/qmk_firmware/issues/2274) some reflashing and soldering directly to the MDBT40 chip.
-
## Bluetooth Rules.mk Options
The currently supported Bluetooth chipsets do not support [N-Key Rollover (NKRO)](reference_glossary.md#n-key-rollover-nkro), so `rules.mk` must contain `NKRO_ENABLE = no`.
-Use only one of these to enable Bluetooth:
-* BLUETOOTH_ENABLE = yes (Legacy Option)
-* BLUETOOTH = RN42
-* BLUETOOTH = AdafruitBLE
+Add the following to your `rules.mk`:
+
+```make
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE # or RN42
+```
## Bluetooth Keycodes
diff --git a/docs/feature_bootmagic.md b/docs/feature_bootmagic.md
index 6c66b00679a..148ea92b9e2 100644
--- a/docs/feature_bootmagic.md
+++ b/docs/feature_bootmagic.md
@@ -8,8 +8,6 @@ On some keyboards Bootmagic Lite is disabled by default. If this is the case, it
BOOTMAGIC_ENABLE = yes
```
-?> You may see `lite` being used in place of `yes`.
-
Additionally, you may want to specify which key to use. This is especially useful for keyboards that have unusual matrices. To do so, you need to specify the row and column of the key that you want to use. Add these entries to your `config.h` file:
```c
diff --git a/docs/feature_combo.md b/docs/feature_combo.md
index d98e6f2ac7d..0e7ebd6c3be 100644
--- a/docs/feature_combo.md
+++ b/docs/feature_combo.md
@@ -56,7 +56,7 @@ combo_t key_combos[COMBO_COUNT] = {
[AB_ESC] = COMBO(ab_combo, KC_ESC),
[JK_TAB] = COMBO(jk_combo, KC_TAB),
[QW_SFT] = COMBO(qw_combo, KC_LSFT)
- [SD_LAYER] = COMBO(layer_combo, MO(_LAYER)),
+ [SD_LAYER] = COMBO(sd_combo, MO(_LAYER)),
};
```
@@ -173,7 +173,7 @@ uint16_t get_combo_term(uint16_t index, combo_t *combo) {
// i.e. the exact array of keys you defined for the combo.
// This can be useful if your combos have a common key and you want to apply the
// same combo term for all of them.
- if (combo->keys[0] == KC_ENTER) { // if first key in the array is KC_ENTER
+ if (combo->keys[0] == KC_ENT) { // if first key in the array is Enter
return 150;
}
diff --git a/docs/feature_digitizer.md b/docs/feature_digitizer.md
index 9b6aeddbaa9..ac2d64f9777 100644
--- a/docs/feature_digitizer.md
+++ b/docs/feature_digitizer.md
@@ -4,7 +4,7 @@ The digitizer HID interface allows setting the mouse cursor position at absolute
To enable the digitizer interface, add the following line to your rules.mk:
-```makefile
+```make
DIGITIZER_ENABLE = yes
```
diff --git a/docs/feature_grave_esc.md b/docs/feature_grave_esc.md
index f57c6042ca5..f135b1dede5 100644
--- a/docs/feature_grave_esc.md
+++ b/docs/feature_grave_esc.md
@@ -4,7 +4,7 @@ If you're using a 60% keyboard, or any other layout with no F-row, you will have
## Usage
-Replace the `KC_GRAVE` key in your keymap (usually to the left of the `1` key) with `KC_GESC`. Most of the time this key will output `KC_ESC` when pressed. However, when Shift or GUI are held down it will output `KC_GRV` instead.
+Replace the `KC_GRV` key in your keymap (usually to the left of the `1` key) with `KC_GESC`. Most of the time this key will output `KC_ESC` when pressed. However, when Shift or GUI are held down it will output `KC_GRV` instead.
## What Your OS Sees
diff --git a/docs/feature_haptic_feedback.md b/docs/feature_haptic_feedback.md
index 1f36f5b054f..c8c74cb8f0e 100644
--- a/docs/feature_haptic_feedback.md
+++ b/docs/feature_haptic_feedback.md
@@ -4,9 +4,22 @@
The following options are currently available for haptic feedback in `rules.mk`:
-`HAPTIC_ENABLE += DRV2605L`
+```
+HAPTIC_ENABLE = yes
+
+HAPTIC_DRIVER += DRV2605L
+HAPTIC_DRIVER += SOLENOID
+```
+
+The following `config.h` settings are available for all types of haptic feedback:
-`HAPTIC_ENABLE += SOLENOID`
+| Settings | Default | Description |
+|--------------------------------------|---------------|---------------------------------------------------------------------------------------------------------------|
+|`HAPTIC_ENABLE_PIN` | *Not defined* |Configures a pin to enable a boost converter for some haptic solution, often used with solenoid drivers. |
+|`HAPTIC_ENABLE_PIN_ACTIVE_LOW` | *Not defined* |If defined then the haptic enable pin is active-low. |
+|`HAPTIC_ENABLE_STATUS_LED` | *Not defined* |Configures a pin to reflect the current enabled/disabled status of haptic feedback. |
+|`HAPTIC_ENABLE_STATUS_LED_ACTIVE_LOW` | *Not defined* |If defined then the haptic status led will be active-low. |
+|`HAPTIC_OFF_IN_LOW_POWER` | `0` |If set to `1`, haptic feedback is disabled before the device is configured, and while the device is suspended. |
## Known Supported Hardware
@@ -45,6 +58,7 @@ First you will need a build a circuit to drive the solenoid through a mosfet as
| Settings | Default | Description |
|----------------------------|----------------------|-------------------------------------------------------|
|`SOLENOID_PIN` | *Not defined* |Configures the pin that the Solenoid is connected to. |
+|`SOLENOID_PIN_ACTIVE_LOW` | *Not defined* |If defined then the solenoid trigger pin is active low.|
|`SOLENOID_DEFAULT_DWELL` | `12` ms |Configures the default dwell time for the solenoid. |
|`SOLENOID_MIN_DWELL` | `4` ms |Sets the lower limit for the dwell. |
|`SOLENOID_MAX_DWELL` | `100` ms |Sets the upper limit for the dwell. |
@@ -170,8 +184,9 @@ The Haptic Exclusion is implemented as `__attribute__((weak)) bool get_haptic_en
### NO_HAPTIC_MOD
With the entry of `#define NO_HAPTIC_MOD` in config.h, the following keys will not trigger feedback:
-* Usual modifier keys such as Control/Shift/Alt/Gui (For example `KC_LCTRL`)
+* Usual modifier keys such as Control/Shift/Alt/Gui (For example `KC_LCTL`)
* `MO()` momentary keys. See also [Layers](feature_layers.md).
+* `LM()` momentary keys with mod active.
* `LT()` layer tap keys, when held to activate a layer. However when tapped, and the key is quickly released, and sends a keycode, haptic feedback is still triggered.
* `TT()` layer tap toggle keys, when held to activate a layer. However when tapped `TAPPING_TOGGLE` times to permanently toggle the layer, on the last tap haptic feedback is still triggered.
* `MT()` mod tap keys, when held to keep a usual modifier key pressed. However when tapped, and the key is quickly released, and sends a keycode, haptic feedback is still triggered. See also [Mod-Tap](mod_tap.md).
diff --git a/docs/feature_joystick.md b/docs/feature_joystick.md
index 95702d6a239..fe33517a161 100644
--- a/docs/feature_joystick.md
+++ b/docs/feature_joystick.md
@@ -15,7 +15,7 @@ or send gamepad reports based on values computed by the keyboard.
To use analog input you must first enable it in `rules.mk`:
-```makefile
+```make
JOYSTICK_ENABLE = yes
JOYSTICK_DRIVER = analog # or 'digital'
```
diff --git a/docs/feature_key_overrides.md b/docs/feature_key_overrides.md
index 98036241e33..2417fcf5942 100644
--- a/docs/feature_key_overrides.md
+++ b/docs/feature_key_overrides.md
@@ -39,7 +39,7 @@ For more customization possibilities, you may directly create a `key_override_t`
This shows how the mentioned example of sending `delete` when `shift` + `backspace` are pressed is realized:
```c
-const key_override_t delete_key_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPACE, KC_DELETE);
+const key_override_t delete_key_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPC, KC_DEL);
// This globally defines all key overrides to be used
const key_override_t **key_overrides = (const key_override_t *[]){
@@ -107,10 +107,10 @@ The [Grave Escape feature](feature_grave_esc.md) is limited in its configurabili
```c
// Shift + esc = ~
-const key_override_t tilde_esc_override = ko_make_basic(MOD_MASK_SHIFT, KC_ESC, S(KC_GRAVE));
+const key_override_t tilde_esc_override = ko_make_basic(MOD_MASK_SHIFT, KC_ESC, S(KC_GRV));
// GUI + esc = `
-const key_override_t grave_esc_override = ko_make_basic(MOD_MASK_GUI, KC_ESC, KC_GRAVE);
+const key_override_t grave_esc_override = ko_make_basic(MOD_MASK_GUI, KC_ESC, KC_GRV);
const key_override_t **key_overrides = (const key_override_t *[]){
&tilde_esc_override,
diff --git a/docs/feature_layers.md b/docs/feature_layers.md
index 78d950dc496..e30c540a79e 100644
--- a/docs/feature_layers.md
+++ b/docs/feature_layers.md
@@ -45,7 +45,7 @@ Once you have a good feel for how layers work and what you can do, you can get m
Layers stack on top of each other in numerical order. When determining what a keypress does, QMK scans the layers from the top down, stopping when it reaches the first active layer that is not set to `KC_TRNS`. As a result if you activate a layer that is numerically lower than your current layer, and your current layer (or another layer that is active and higher than your target layer) has something other than `KC_TRNS`, that is the key that will be sent, not the key on the layer you just activated. This is the cause of most people's "why doesn't my layer get switched" problem.
-Sometimes, you might want to switch between layers in a macro or as part of a tap dance routine. `layer_on` activates a layer, and `layer_off` deactivates it. More layer-related functions can be found in [action_layer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/action_layer.h).
+Sometimes, you might want to switch between layers in a macro or as part of a tap dance routine. `layer_on` activates a layer, and `layer_off` deactivates it. More layer-related functions can be found in [action_layer.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/action_layer.h).
## Functions :id=functions
diff --git a/docs/feature_layouts.md b/docs/feature_layouts.md
index b34fd442d5c..93d040b5542 100644
--- a/docs/feature_layouts.md
+++ b/docs/feature_layouts.md
@@ -25,7 +25,7 @@ The `layouts/default/` and `layouts/community/` are two examples of layout "repo
Each layout folder is named (`[a-z0-9_]`) after the physical aspects of the layout, in the most generic way possible, and contains a `readme.md` with the layout to be defined by the keyboard:
-```md
+```markdown
# 60_ansi
LAYOUT_60_ansi
diff --git a/docs/feature_led_matrix.md b/docs/feature_led_matrix.md
index ed92bffd996..dfd63503f2d 100644
--- a/docs/feature_led_matrix.md
+++ b/docs/feature_led_matrix.md
@@ -49,10 +49,12 @@ Here is an example using 2 drivers.
!> Note the parentheses, this is so when `LED_DRIVER_LED_TOTAL` is used in code and expanded, the values are added together before any additional math is applied to them. As an example, `rand() % (LED_DRIVER_1_LED_TOTAL + LED_DRIVER_2_LED_TOTAL)` will give very different results than `rand() % LED_DRIVER_1_LED_TOTAL + LED_DRIVER_2_LED_TOTAL`.
+For split keyboards using `LED_MATRIX_SPLIT` with an LED driver, you can either have the same driver address or different driver addresses. If using different addresses, use `DRIVER_ADDR_1` for one and `DRIVER_ADDR_2` for the other one. Then, in `g_is31_leds`, fill out the correct driver index (0 or 1). If using one address, use `DRIVER_ADDR_1` for both, and use index 0 for `g_is31_leds`.
+
Define these arrays listing all the LEDs in your `.c`:
```c
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | LED address
@@ -164,26 +166,26 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con
|Define |Description |
|-------------------------------------------------------|-----------------------------------------------|
-|`#define DISABLE_LED_MATRIX_ALPHAS_MODS` |Disables `LED_MATRIX_ALPHAS_MODS` |
-|`#define DISABLE_LED_MATRIX_BREATHING` |Disables `LED_MATRIX_BREATHING` |
-|`#define DISABLE_LED_MATRIX_BAND` |Disables `LED_MATRIX_BAND` |
-|`#define DISABLE_LED_MATRIX_BAND_PINWHEEL` |Disables `LED_MATRIX_BAND_PINWHEEL` |
-|`#define DISABLE_LED_MATRIX_BAND_SPIRAL` |Disables `LED_MATRIX_BAND_SPIRAL` |
-|`#define DISABLE_LED_MATRIX_CYCLE_LEFT_RIGHT` |Disables `LED_MATRIX_CYCLE_LEFT_RIGHT` |
-|`#define DISABLE_LED_MATRIX_CYCLE_UP_DOWN` |Disables `LED_MATRIX_CYCLE_UP_DOWN` |
-|`#define DISABLE_LED_MATRIX_CYCLE_OUT_IN` |Disables `LED_MATRIX_CYCLE_OUT_IN` |
-|`#define DISABLE_LED_MATRIX_DUAL_BEACON` |Disables `LED_MATRIX_DUAL_BEACON` |
-|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `LED_MATRIX_SOLID_REACTIVE_SIMPLE` |
-|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_WIDE` |Disables `LED_MATRIX_SOLID_REACTIVE_WIDE` |
-|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Disables `LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
-|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_CROSS` |Disables `LED_MATRIX_SOLID_REACTIVE_CROSS` |
-|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS` |Disables `LED_MATRIX_SOLID_REACTIVE_MULTICROSS`|
-|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS` |Disables `LED_MATRIX_SOLID_REACTIVE_NEXUS` |
-|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Disables `LED_MATRIX_SOLID_REACTIVE_MULTINEXUS`|
-|`#define DISABLE_LED_MATRIX_SOLID_SPLASH` |Disables `LED_MATRIX_SOLID_SPLASH` |
-|`#define DISABLE_LED_MATRIX_SOLID_MULTISPLASH` |Disables `LED_MATRIX_SOLID_MULTISPLASH` |
-|`#define DISABLE_LED_MATRIX_WAVE_LEFT_RIGHT` |Disables `LED_MATRIX_WAVE_LEFT_RIGHT` |
-|`#define DISABLE_LED_MATRIX_WAVE_UP_DOWN` |Disables `LED_MATRIX_WAVE_UP_DOWN` |
+|`#define ENABLE_LED_MATRIX_ALPHAS_MODS` |Enables `LED_MATRIX_ALPHAS_MODS` |
+|`#define ENABLE_LED_MATRIX_BREATHING` |Enables `LED_MATRIX_BREATHING` |
+|`#define ENABLE_LED_MATRIX_BAND` |Enables `LED_MATRIX_BAND` |
+|`#define ENABLE_LED_MATRIX_BAND_PINWHEEL` |Enables `LED_MATRIX_BAND_PINWHEEL` |
+|`#define ENABLE_LED_MATRIX_BAND_SPIRAL` |Enables `LED_MATRIX_BAND_SPIRAL` |
+|`#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT` |Enables `LED_MATRIX_CYCLE_LEFT_RIGHT` |
+|`#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN` |Enables `LED_MATRIX_CYCLE_UP_DOWN` |
+|`#define ENABLE_LED_MATRIX_CYCLE_OUT_IN` |Enables `LED_MATRIX_CYCLE_OUT_IN` |
+|`#define ENABLE_LED_MATRIX_DUAL_BEACON` |Enables `LED_MATRIX_DUAL_BEACON` |
+|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE` |Enables `LED_MATRIX_SOLID_REACTIVE_SIMPLE` |
+|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE` |Enables `LED_MATRIX_SOLID_REACTIVE_WIDE` |
+|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Enables `LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
+|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS` |Enables `LED_MATRIX_SOLID_REACTIVE_CROSS` |
+|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS` |Enables `LED_MATRIX_SOLID_REACTIVE_MULTICROSS`|
+|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS` |Enables `LED_MATRIX_SOLID_REACTIVE_NEXUS` |
+|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Enables `LED_MATRIX_SOLID_REACTIVE_MULTINEXUS`|
+|`#define ENABLE_LED_MATRIX_SOLID_SPLASH` |Enables `LED_MATRIX_SOLID_SPLASH` |
+|`#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH` |Enables `LED_MATRIX_SOLID_MULTISPLASH` |
+|`#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT` |Enables `LED_MATRIX_WAVE_LEFT_RIGHT` |
+|`#define ENABLE_LED_MATRIX_WAVE_UP_DOWN` |Enables `LED_MATRIX_WAVE_UP_DOWN` |
## Custom LED Matrix Effects :id=custom-led-matrix-effects
@@ -219,7 +221,7 @@ static bool my_cool_effect(effect_params_t* params) {
for (uint8_t i = led_min; i < led_max; i++) {
led_matrix_set_value(i, 0xFF);
}
- return led_max < DRIVER_LED_TOTAL;
+ return led_matrix_check_finished_leds(led_max);
}
// e.g: A more complex effect, relying on external methods and state, with
@@ -233,8 +235,7 @@ static bool my_cool_effect2_complex_run(effect_params_t* params) {
for (uint8_t i = led_min; i < led_max; i++) {
led_matrix_set_value(i, some_global_state++);
}
-
- return led_max < DRIVER_LED_TOTAL;
+ return led_matrix_check_finished_leds(led_max);
}
static bool my_cool_effect2(effect_params_t* params) {
if (params->init) my_cool_effect2_complex_init(params);
diff --git a/docs/feature_macros.md b/docs/feature_macros.md
index 3660f377559..81ade585926 100644
--- a/docs/feature_macros.md
+++ b/docs/feature_macros.md
@@ -4,7 +4,107 @@ Macros allow you to send multiple keystrokes when pressing just one key. QMK has
!> **Security Note**: While it is possible to use macros to send passwords, credit card numbers, and other sensitive information it is a supremely bad idea to do so. Anyone who gets a hold of your keyboard will be able to access that information by opening a text editor.
-## `SEND_STRING()` & `process_record_user`
+## Using Macros In JSON Keymaps
+
+You can define up to 32 macros in a `keymap.json` file, as used by [Configurator](newbs_building_firmware_configurator.md), and `qmk compile`. You can define these macros in a list under the `macros` keyword, like this:
+
+```json
+{
+ "keyboard": "handwired/my_macropad",
+ "keymap": "my_keymap",
+ "macros": [
+ [
+ {"action":"down", "keycodes": ["LSFT"]},
+ "hello world1",
+ {"action": "up","keycodes": ["LSFT"]}
+ ],
+ [
+ {"action":"tap", "keycodes": ["LCTL", "LALT", "DEL"]}
+ ],
+ [
+ "ding!",
+ {"action":"beep"}
+ ],
+ [
+ {"action":"tap", "keycodes": ["F1"]},
+ {"action":"delay", "duration": "1000"},
+ {"action":"tap", "keycodes": ["PGDN"]}
+ ]
+ ],
+ "layout": "LAYOUT_all",
+ "layers": [
+ ["MACRO_0", "MACRO_1", "MACRO_2", "MACRO_3"]
+ ]
+}
+```
+
+### Selecting Your Host Keyboard Layout
+
+If you type in a language other than English, or use a non-QWERTY layout like Colemak, Dvorak, or Workman, you may have set your computer's input language to match this layout. This presents a challenge when creating macros- you may need to type different keys to get the same letters! To address this you can add the `host_language` key to your keymap.json, like so:
+
+```json
+{
+ "keyboard": "handwired/my_macropad",
+ "keymap": "my_keymap",
+ "host_layout": "dvorak",
+ "macros": [
+ ["Hello, World!"]
+ ],
+ "layout": "LAYOUT_all",
+ "layers": [
+ ["MACRO_0"]
+ ]
+}
+```
+
+The current list of available languages is:
+
+| belgian | bepo | br_abnt2 | canadian_multilingual |
+|:-------:|:----:|:--------:|:---------------------:|
+| **colemak** | **croatian** | **czech** | **danish** |
+| **dvorak_fr** | **dvorak** | **dvp** | **estonian** |
+| **finnish** | **fr_ch** | **french_afnor** | **french** |
+| **french_osx** | **german_ch** | **german** | **german_osx** |
+| **hungarian** | **icelandic** | **italian** | **italian_osx_ansi** |
+| **italian_osx_iso** | **jis** | **latvian** | **lithuanian_azerty** |
+| **lithuanian_qwerty** | **norman** | **norwegian** | **portuguese** |
+| **portuguese_osx_iso** | **romanian** | **serbian_latin** | **slovak** |
+| **slovenian** | **spanish_dvorak** | **spanish** | **swedish** |
+| **turkish_f** | **turkish_q** | **uk** | **us_international** |
+| **workman** | **workman_zxcvm** |
+
+### Macro Basics
+
+Each macro is an array consisting of strings and objects (dictionaries.) Strings are typed to your computer while objects allow you to control how your macro is typed out.
+
+#### Object Format
+
+All objects have one required key: `action`. This tells QMK what the object does. There are currently 5 actions: beep, delay, down, tap, up
+
+Only basic keycodes (prefixed by `KC_`) are supported. Do not include the `KC_` prefix when listing keycodes.
+
+* `beep`
+ * Play a bell if the keyboard has [audio enabled](feature_audio.md).
+ * Example: `{"action": "beep"}`
+* `delay`
+ * Pause macro playback. Duration is specified in milliseconds (ms).
+ * Example: `{"action": "delay", "duration": 500}`
+* `down`
+ * Send a key down event for one or more keycodes.
+ * Example, single key: `{"action":"down", "keycodes": ["LSFT"]}`
+ * Example, multiple keys: `{"action":"down", "keycodes": ["CTRL", "LSFT"]}`
+* `tap`
+ * Type a chord, which sends a down event for each key followed by an up event for each key.
+ * Example, single key: `{"action":"tap", "keycodes": ["F13"]}`
+ * Example, multiple keys: `{"action":"tap", "keycodes": ["CTRL", "LALT", "DEL"]}`
+* `up`
+ * Send a key up event for one or more keycodes.
+ * Example, single key: `{"action":"up", "keycodes": ["LSFT"]}`
+ * Example, multiple keys: `{"action":"up", "keycodes": ["CTRL", "LSFT"]}`
+
+## Using Macros in C Keymaps
+
+### `SEND_STRING()` & `process_record_user`
Sometimes you want a key to type out words or phrases. For the most common situations, we've provided `SEND_STRING()`, which will type out a string (i.e. a sequence of characters) for you. All ASCII characters that are easily translatable to a keycode are supported (e.g. `qmk 123\n\t`).
@@ -91,7 +191,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
```
-### Advanced Macros
+#### Advanced Macros
In addition to the `process_record_user()` function, is the `post_process_record_user()` function. This runs after `process_record` and can be used to do things after a keystroke has been sent. This is useful if you want to have a key pressed before and released after a normal key, for instance.
@@ -118,7 +218,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_A ... KC_F21: //notice how it skips over F22
- case KC_F23 ... KC_EXSEL: //exsel is the last one before the modifier keys
+ case KC_F23 ... KC_EXSL: //exsel is the last one before the modifier keys
if (!record->event.pressed) {
f22_tracker--;
if (!f22_tracker) {
@@ -131,7 +231,7 @@ void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
```
-### TAP, DOWN and UP
+#### TAP, DOWN and UP
You may want to use keys in your macros that you can't write down, such as `Ctrl` or `Home`.
You can send arbitrary keycodes by wrapping them in:
@@ -178,7 +278,7 @@ They can be used like this:
Which would send Left Control+`a` (Left Control down, `a`, Left Control up) - notice that they take strings (eg `"k"`), and not the `X_K` keycodes.
-### Alternative Keymaps
+#### Alternative Keymaps
By default, it assumes a US keymap with a QWERTY layout; if you want to change that (e.g. if your OS uses software Colemak), include this somewhere in your keymap:
@@ -186,7 +286,7 @@ By default, it assumes a US keymap with a QWERTY layout; if you want to change t
#include "sendstring_colemak.h"
```
-### Strings in Memory
+#### Strings in Memory
If for some reason you're manipulating strings and need to print out something you just generated (instead of being a literal, constant string), you can use `send_string()`, like this:
@@ -205,13 +305,13 @@ SEND_STRING(".."SS_TAP(X_END));
```
-## Advanced Macro Functions
+### Advanced Macro Functions
There are some functions you may find useful in macro-writing. Keep in mind that while you can write some fairly advanced code within a macro, if your functionality gets too complex you may want to define a custom keycode instead. Macros are meant to be simple.
?> You can also use the functions described in [Useful function](ref_functions.md) and [Checking modifier state](feature_advanced_keycodes#checking-modifier-state) for additional functionality. For example, `reset_keyboard()` allows you to reset the keyboard as part of a macro and `get_mods() & MOD_MASK_SHIFT` lets you check for the existence of active shift modifiers.
-### `record->event.pressed`
+#### `record->event.pressed`
This is a boolean value that can be tested to see if the switch is being pressed or released. An example of this is
@@ -223,15 +323,15 @@ This is a boolean value that can be tested to see if the switch is being pressed
}
```
-### `register_code();`
+#### `register_code();`
This sends the `` keydown event to the computer. Some examples would be `KC_ESC`, `KC_C`, `KC_4`, and even modifiers such as `KC_LSFT` and `KC_LGUI`.
-### `unregister_code();`
+#### `unregister_code();`
Parallel to `register_code` function, this sends the `` keyup event to the computer. If you don't use this, the key will be held down until it's sent.
-### `tap_code();`
+#### `tap_code();`
Sends `register_code()` and then `unregister_code()`. This is useful if you want to send both the press and release events ("tap" the key, rather than hold it).
@@ -239,31 +339,31 @@ If `TAP_CODE_DELAY` is defined (default 0), this function waits that many millis
If the keycode is `KC_CAPS`, it waits `TAP_HOLD_CAPS_DELAY` milliseconds instead (default 80), as macOS prevents accidental Caps Lock activation by waiting for the key to be held for a certain amount of time.
-### `tap_code_delay(, );`
+#### `tap_code_delay(, );`
Like `tap_code()`, but with a `delay` parameter for specifying arbitrary intervals before sending the unregister event.
-### `register_code16();`, `unregister_code16();` and `tap_code16();`
+#### `register_code16();`, `unregister_code16();` and `tap_code16();`
These functions work similar to their regular counterparts, but allow you to use modded keycodes (with Shift, Alt, Control, and/or GUI applied to them).
Eg, you could use `register_code16(S(KC_5));` instead of registering the mod, then registering the keycode.
-### `clear_keyboard();`
+#### `clear_keyboard();`
This will clear all mods and keys currently pressed.
-### `clear_mods();`
+#### `clear_mods();`
This will clear all mods currently pressed.
-### `clear_keyboard_but_mods();`
+#### `clear_keyboard_but_mods();`
This will clear all keys besides the mods currently pressed.
-## Advanced Example:
+### Advanced Example:
-### Super ALT↯TAB
+#### Super ALT↯TAB
This macro will register `KC_LALT` and tap `KC_TAB`, then wait for 1000ms. If the key is tapped again, it will send another `KC_TAB`; if there is no tap, `KC_LALT` will be unregistered, thus allowing you to cycle through windows.
diff --git a/docs/feature_midi.md b/docs/feature_midi.md
index ab29d89db6d..3da5c4940a3 100644
--- a/docs/feature_midi.md
+++ b/docs/feature_midi.md
@@ -4,7 +4,7 @@
First, enable MIDI by adding the following to your `rules.mk`:
-```makefile
+```make
MIDI_ENABLE = yes
```
diff --git a/docs/feature_oled_driver.md b/docs/feature_oled_driver.md
index 6d82aa0f59a..0c926f67426 100644
--- a/docs/feature_oled_driver.md
+++ b/docs/feature_oled_driver.md
@@ -38,7 +38,7 @@ Then in your `keymap.c` file, implement the OLED task call. This example assumes
```c
#ifdef OLED_ENABLE
-void oled_task_user(void) {
+bool oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
@@ -62,6 +62,8 @@ void oled_task_user(void) {
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
```
@@ -133,13 +135,14 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return rotation;
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
} else {
render_logo(); // Renders a static logo
oled_scroll_left(); // Turns on scrolling
}
+ return false;
}
#endif
```
@@ -242,6 +245,7 @@ bool oled_init(oled_rotation_t rotation);
// Called at the start of oled_init, weak function overridable by the user
// rotation - the value passed into oled_init
// Return new oled_rotation_t if you want to override default rotation
+oled_rotation_t oled_init_kb(oled_rotation_t rotation);
oled_rotation_t oled_init_user(oled_rotation_t rotation);
// Clears the display buffer, resets cursor position to 0, and sets the buffer to dirty for rendering
@@ -333,7 +337,8 @@ uint8_t oled_get_brightness(void);
void oled_task(void);
// Called at the start of oled_task, weak function overridable by the user
-void oled_task_user(void);
+bool oled_task_kb(void);
+bool oled_task_user(void);
// Set the specific 8 lines rows of the screen to scroll.
// 0 is the default for start, and 7 for end, which is the entire
diff --git a/docs/feature_pointing_device.md b/docs/feature_pointing_device.md
index 905c2a8f95a..031ee52c1c9 100644
--- a/docs/feature_pointing_device.md
+++ b/docs/feature_pointing_device.md
@@ -1,19 +1,205 @@
# Pointing Device :id=pointing-device
-Pointing Device is a generic name for a feature intended to be generic: moving the system pointer around. There are certainly other options for it - like mousekeys - but this aims to be easily modifiable and lightweight. You can implement custom keys to control functionality, or you can gather information from other peripherals and insert it directly here - let QMK handle the processing for you.
+Pointing Device is a generic name for a feature intended to be generic: moving the system pointer around. There are certainly other options for it - like mousekeys - but this aims to be easily modifiable and hardware driven. You can implement custom keys to control functionality, or you can gather information from other peripherals and insert it directly here - let QMK handle the processing for you.
To enable Pointing Device, uncomment the following line in your rules.mk:
-```makefile
+```make
POINTING_DEVICE_ENABLE = yes
```
-To manipulate the mouse report, you can use the following functions:
+## Sensor Drivers
-* `pointing_device_get_report()` - Returns the current report_mouse_t that represents the information sent to the host computer
-* `pointing_device_set_report(report_mouse_t newMouseReport)` - Overrides and saves the report_mouse_t to be sent to the host computer
+There are a number of sensors that are supported by default. Note that only one sensor can be enabled by `POINTING_DEVICE_DRIVER` at a time. If you need to enable more than one sensor, then you need to implement it manually.
+
+### ADNS 5050 Sensor
+
+To use the ADNS 5050 sensor, add this to your `rules.mk`
+
+```make
+POINTING_DEVICE_DRIVER = adns5050
+```
+
+The ADNS 5050 sensor uses a serial type protocol for communication, and requires an additional light source.
+
+| Setting | Description |
+|--------------------|---------------------------------------------------------------------|
+|`ADNS5050_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. |
+|`ADNS5050_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. |
+|`ADNS5050_CS_PIN` | (Required) The pin connected to the cable select pin of the sensor. |
+
+The CPI range is 125-1375, in increments of 125. Defaults to 500 CPI.
+
+### ADSN 9800 Sensor
+
+To use the ADNS 9800 sensor, add this to your `rules.mk`
+
+```make
+POINTING_DEVICE_DRIVER = adns9800
+```
+
+The ADNS 9800 is an SPI driven optical sensor, that uses laser output for surface tracking.
+
+| Setting | Description | Default |
+|------------------------|------------------------------------------------------------------------|---------------|
+|`ADNS9800_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
+|`ADNS9800_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
+|`ADNS9800_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
+|`ADNS9800_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
+|`ADNS9800_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
+
+
+The CPI range is 800-8200, in increments of 200. Defaults to 1800 CPI.
+
+### Analog Joystick
+
+To use an analog joystick to control the pointer, add this to your `rules.mk`
+
+```make
+POINTING_DEVICE_DRIVER = analog_joystick
+```
+
+The Analog Joystick is an analog (ADC) driven sensor. There are a variety of joysticks that you can use for this.
+
+| Setting | Description | Default |
+|----------------------------------|----------------------------------------------------------------------------|---------------|
+|`ANALOG_JOYSTICK_X_AXIS_PIN` | (Required) The pin used for the vertical/X axis. | _not defined_ |
+|`ANALOG_JOYSTICK_Y_AXIS_PIN` | (Required) The pin used for the horizontal/Y axis. | _not defined_ |
+|`ANALOG_JOYSTICK_AXIS_MIN` | (Optional) Sets the lower range to be considered movement. | `0` |
+|`ANALOG_JOYSTICK_AXIS_MAX` | (Optional) Sets the upper range to be considered movement. | `1023` |
+|`ANALOG_JOYSTICK_SPEED_REGULATOR` | (Optional) The divisor used to slow down movement. (lower makes it faster) | `20` |
+|`ANALOG_JOYSTICK_READ_INTERVAL` | (Optional) The interval in milliseconds between reads. | `10` |
+|`ANALOG_JOYSTICK_SPEED_MAX` | (Optional) The maxiumum value used for motion. | `2` |
+|`ANALOG_JOYSTICK_CLICK_PIN` | (Optional) The pin wired up to the press switch of the analog stick. | _not defined_ |
+
+
+### Cirque Trackpad
+
+To use the Cirque Trackpad sensor, add this to your `rules.mk`:
+
+```make
+POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c
+```
+
+or
+
+```make
+POINTING_DEVICE_DRIVER = cirque_pinnacle_spi
+```
+
+
+This supports the Cirque Pinnacle 1CA027 Touch Controller, which is used in the TM040040, TM035035 and the TM023023 trackpads. These are I2C or SPI compatible, and both configurations are supported.
+
+| Setting | Description | Default |
+|---------------------------------|---------------------------------------------------------------------------------|-----------------------|
+|`CIRQUE_PINNACLE_X_LOWER` | (Optional) The minimum reachable X value on the sensor. | `127` |
+|`CIRQUE_PINNACLE_X_UPPER` | (Optional) The maximum reachable X value on the sensor. | `1919` |
+|`CIRQUE_PINNACLE_Y_LOWER` | (Optional) The minimum reachable Y value on the sensor. | `63` |
+|`CIRQUE_PINNACLE_Y_UPPER` | (Optional) The maximum reachable Y value on the sensor. | `1471` |
+|`CIRQUE_PINNACLE_TAPPING_TERM` | (Optional) Length of time that a touch can be to be considered a tap. | `TAPPING_TERM`/`200` |
+|`CIRQUE_PINNACLE_TOUCH_DEBOUNCE` | (Optional) Length of time that a touch can be to be considered a tap. | `TAPPING_TERM`/`200` |
-Keep in mind that a report_mouse_t (here "mouseReport") has the following properties:
+| I2C Setting | Description | Default |
+|--------------------------|---------------------------------------------------------------------------------|---------|
+|`CIRQUE_PINNACLE_ADDR` | (Required) Sets the I2C Address for the Cirque Trackpad | `0x2A` |
+|`CIRQUE_PINNACLE_TIMEOUT` | (Optional) The timeout for i2c communication with the trackpad in milliseconds. | `20` |
+
+| SPI Setting | Description | Default |
+|-------------------------------|------------------------------------------------------------------------|---------------|
+|`CIRQUE_PINNACLE_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `1000000` |
+|`CIRQUE_PINNACLE_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
+|`CIRQUE_PINNACLE_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `1` |
+|`CIRQUE_PINNACLE_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
+|`CIRQUE_PINNACLE_SPI_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
+
+Default Scaling/CPI is 1024.
+
+### Pimoroni Trackball
+
+To use the Pimoroni Trackball module, add this to your `rules.mk`:
+
+```make
+POINTING_DEVICE_DRIVER = pimoroni_trackball
+```
+
+The Pimoroni Trackball module is a I2C based breakout board with an RGB enable trackball.
+
+| Setting | Description | Default |
+|-------------------------------------|------------------------------------------------------------------------------------|---------|
+|`PIMORONI_TRACKBALL_ADDRESS` | (Required) Sets the I2C Address for the Pimoroni Trackball. | `0x0A` |
+|`PIMORONI_TRACKBALL_TIMEOUT` | (Optional) The timeout for i2c communication with the trackpad in milliseconds. | `100` |
+|`PIMORONI_TRACKBALL_INTERVAL_MS` | (Optional) The update/read interval for the sensor in milliseconds. | `8` |
+|`PIMORONI_TRACKBALL_SCALE` | (Optional) The multiplier used to generate reports from the sensor. | `5` |
+|`PIMORONI_TRACKBALL_DEBOUNCE_CYCLES` | (Optional) The number of scan cycles used for debouncing on the ball press. | `20` |
+|`PIMORONI_TRACKBALL_ERROR_COUNT` | (Optional) Specifies the number of read/write errors until the sensor is disabled. | `10` |
+
+### PMW 3360 Sensor
+
+To use the PMW 3360 sensor, add this to your `rules.mk`
+
+```make
+POINTING_DEVICE_DRIVER = pmw3360
+```
+
+The PMW 3360 is an SPI driven optical sensor, that uses a built in IR LED for surface tracking.
+
+| Setting | Description | Default |
+|-----------------------------|--------------------------------------------------------------------------------------------|---------------|
+|`PMW3360_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
+|`PMW3360_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
+|`PMW3360_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
+|`PMW3360_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
+|`PMW3360_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
+|`ROTATIONAL_TRANSFORM_ANGLE` | (Optional) Allows for the sensor data to be rotated +/- 30 degrees directly in the sensor. | `0` |
+
+The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI.
+
+
+### Custom Driver
+
+If you have a sensor type that isn't supported here, you can manually implement it, by adding these functions (with the correct implementation for your device):
+
+```c
+void pointing_device_driver_init(void) {}
+report_mouse_t pointing_device_driver_get_report(report_mouse_t mouse_report) { return mouse_report; }
+uint16_t pointing_device_driver_get_cpi(void) { return 0; }
+void pointing_device_driver_set_cpi(uint16_t cpi) {}
+```
+
+!> Ideally, new sensor hardware should be added to `drivers/sensors/` and `quantum/pointing_device_drivers.c`, but there may be cases where it's very specific to the hardware. So these functions are provided, just in case.
+
+## Common Configuration
+
+| Setting | Description | Default |
+|-------------------------------|-----------------------------------------------------------------------|---------------|
+|`POINTING_DEVICE_ROTATION_90` | (Optional) Rotates the X and Y data by 90 degrees. | _not defined_ |
+|`POINTING_DEVICE_ROTATION_180` | (Optional) Rotates the X and Y data by 180 degrees. | _not defined_ |
+|`POINTING_DEVICE_ROTATION_270` | (Optional) Rotates the X and Y data by 270 degrees. | _not defined_ |
+|`POINTING_DEVICE_INVERT_X` | (Optional) Inverts the X axis report. | _not defined_ |
+|`POINTING_DEVICE_INVERT_Y` | (Optional) Inverts the Y axis report. | _not defined_ |
+|`POINTING_DEVICE_MOTION_PIN` | (Optional) If supported, will only read from sensor if pin is active. | _not defined_ |
+
+
+## Callbacks and Functions
+
+| Function | Description |
+|-----------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
+| `pointing_device_init_kb(void)` | Callback to allow for keyboard level initialization. Useful for additional hardware sensors. |
+| `pointing_device_init_user(void)` | Callback to allow for user level initialization. Useful for additional hardware sensors. |
+| `pointing_device_task_kb(mouse_report)` | Callback that sends sensor data, so keyboard code can intercept and modify the data. Returns a mouse report. |
+| `pointing_device_task_user(mouse_report)` | Callback that sends sensor data, so user coe can intercept and modify the data. Returns a mouse report. |
+| `pointing_device_handle_buttons(buttons, pressed, button)` | Callback to handle hardware button presses. Returns a `uint8_t`. |
+| `pointing_device_get_cpi(void)` | Gets the current CPI/DPI setting from the sensor, if supported. |
+| `pointing_device_set_cpi(uint16_t)` | Sets the CPI/DPI, if supported. |
+| `pointing_device_get_report(void)` | Returns the current mouse report (as a `mouse_report_t` data structure). |
+| `pointing_device_set_report(mouse_report)` | Sets the mouse report to the assigned `mouse_report_t` data structured passed to the function. |
+| `pointing_device_send(void)` | Sends the current mouse report to the host system. Function can be replaced. |
+| `has_mouse_report_changed(old, new)` | Compares the old and new `mouse_report_t` data and returns true only if it has changed. |
+
+
+# Manipulating Mouse Reports
+
+The report_mouse_t (here "mouseReport") has the following properties:
* `mouseReport.x` - this is a signed int from -127 to 127 (not 128, this is defined in USB HID spec) representing movement (+ to the right, - to the left) on the x axis.
* `mouseReport.y` - this is a signed int from -127 to 127 (not 128, this is defined in USB HID spec) representing movement (+ upward, - downward) on the y axis.
@@ -21,8 +207,10 @@ Keep in mind that a report_mouse_t (here "mouseReport") has the following proper
* `mouseReport.h` - this is a signed int from -127 to 127 (not 128, this is defined in USB HID spec) representing horizontal scrolling (+ right, - left).
* `mouseReport.buttons` - this is a uint8_t in which all 8 bits are used. These bits represent the mouse button state - bit 0 is mouse button 1, and bit 7 is mouse button 8.
-Once you have made the necessary changes to the mouse report, you need to send it:
+To manually manipulate the mouse reports outside of the `pointing_device_task_*` functions, you can use:
+* `pointing_device_get_report()` - Returns the current report_mouse_t that represents the information sent to the host computer
+* `pointing_device_set_report(report_mouse_t newMouseReport)` - Overrides and saves the report_mouse_t to be sent to the host computer
* `pointing_device_send()` - Sends the mouse report to the host and zeroes out the report.
When the mouse report is sent, the x, y, v, and h values are set to 0 (this is done in `pointing_device_send()`, which can be overridden to avoid this behavior). This way, button states persist, but movement will only occur once. For further customization, both `pointing_device_init` and `pointing_device_task` can be overridden.
@@ -31,6 +219,8 @@ Additionally, by default, `pointing_device_send()` will only send a report when
Also, you use the `has_mouse_report_changed(new, old)` function to check to see if the report has changed.
+## Example
+
In the following example, a custom key is used to click the mouse and scroll 127 units vertically and horizontally, then undo all of that when released - because that's a totally useful function. Listen, this is an example:
```c
diff --git a/docs/feature_programmable_button.md b/docs/feature_programmable_button.md
new file mode 100644
index 00000000000..b1ef555d16a
--- /dev/null
+++ b/docs/feature_programmable_button.md
@@ -0,0 +1,74 @@
+## Programmable Button
+
+Programmable button is a feature that can be used to send keys that have no
+predefined meaning.
+This means they can be processed on the host side by custom software without
+colliding without the operating system trying to interpret these keys.
+
+The keycodes are emitted according to the HID usage
+"Telephony Device Page" (0x0B), "Programmable button usage" (0x07).
+On Linux (> 5.14) they are handled automatically and translated to `KEY_MACRO#`
+keycodes.
+(Up to `KEY_MACRO30`)
+
+### Enabling Programmable Button support
+
+To enable Programmable Button, add the following line to your keymap’s `rules.mk`:
+
+```c
+PROGRAMMABLE_BUTTON_ENABLE = yes
+```
+
+### Mapping
+
+In your keymap you can use the following keycodes to map key presses to Programmable Buttons:
+
+|Key |Description |
+|------------------------|----------------------|
+|`PROGRAMMABLE_BUTTON_1` |Programmable button 1 |
+|`PROGRAMMABLE_BUTTON_2` |Programmable button 2 |
+|`PROGRAMMABLE_BUTTON_3` |Programmable button 3 |
+|`PROGRAMMABLE_BUTTON_4` |Programmable button 4 |
+|`PROGRAMMABLE_BUTTON_5` |Programmable button 5 |
+|`PROGRAMMABLE_BUTTON_6` |Programmable button 6 |
+|`PROGRAMMABLE_BUTTON_7` |Programmable button 7 |
+|`PROGRAMMABLE_BUTTON_8` |Programmable button 8 |
+|`PROGRAMMABLE_BUTTON_9` |Programmable button 9 |
+|`PROGRAMMABLE_BUTTON_10`|Programmable button 10|
+|`PROGRAMMABLE_BUTTON_11`|Programmable button 11|
+|`PROGRAMMABLE_BUTTON_12`|Programmable button 12|
+|`PROGRAMMABLE_BUTTON_13`|Programmable button 13|
+|`PROGRAMMABLE_BUTTON_14`|Programmable button 14|
+|`PROGRAMMABLE_BUTTON_15`|Programmable button 15|
+|`PROGRAMMABLE_BUTTON_16`|Programmable button 16|
+|`PROGRAMMABLE_BUTTON_17`|Programmable button 17|
+|`PROGRAMMABLE_BUTTON_18`|Programmable button 18|
+|`PROGRAMMABLE_BUTTON_19`|Programmable button 19|
+|`PROGRAMMABLE_BUTTON_20`|Programmable button 20|
+|`PROGRAMMABLE_BUTTON_21`|Programmable button 21|
+|`PROGRAMMABLE_BUTTON_22`|Programmable button 22|
+|`PROGRAMMABLE_BUTTON_23`|Programmable button 23|
+|`PROGRAMMABLE_BUTTON_24`|Programmable button 24|
+|`PROGRAMMABLE_BUTTON_25`|Programmable button 25|
+|`PROGRAMMABLE_BUTTON_26`|Programmable button 26|
+|`PROGRAMMABLE_BUTTON_27`|Programmable button 27|
+|`PROGRAMMABLE_BUTTON_28`|Programmable button 28|
+|`PROGRAMMABLE_BUTTON_29`|Programmable button 29|
+|`PROGRAMMABLE_BUTTON_30`|Programmable button 30|
+|`PROGRAMMABLE_BUTTON_31`|Programmable button 31|
+|`PROGRAMMABLE_BUTTON_32`|Programmable button 32|
+|`PB_1` to `PB_32` |Aliases for keymaps |
+
+### API
+
+You can also use a dedicated API defined in `programmable_button.h` to interact with this feature:
+
+```
+void programmable_button_clear(void);
+void programmable_button_send(void);
+void programmable_button_on(uint8_t code);
+void programmable_button_off(uint8_t code);
+bool programmable_button_is_on(uint8_t code);
+uint32_t programmable_button_get_report(void);
+void programmable_button_set_report(uint32_t report);
+```
diff --git a/docs/feature_ps2_mouse.md b/docs/feature_ps2_mouse.md
index 776a33150ec..c980705ae7f 100644
--- a/docs/feature_ps2_mouse.md
+++ b/docs/feature_ps2_mouse.md
@@ -30,7 +30,7 @@ Note: This is not recommended, you may encounter jerky movement or unsent inputs
In rules.mk:
-```makefile
+```make
PS2_MOUSE_ENABLE = yes
PS2_USE_BUSYWAIT = yes
```
@@ -39,14 +39,8 @@ In your keyboard config.h:
```c
#ifdef PS2_USE_BUSYWAIT
-# define PS2_CLOCK_PORT PORTD
-# define PS2_CLOCK_PIN PIND
-# define PS2_CLOCK_DDR DDRD
-# define PS2_CLOCK_BIT 1
-# define PS2_DATA_PORT PORTD
-# define PS2_DATA_PIN PIND
-# define PS2_DATA_DDR DDRD
-# define PS2_DATA_BIT 2
+# define PS2_CLOCK_PIN D1
+# define PS2_DATA_PIN D2
#endif
```
@@ -56,7 +50,7 @@ The following example uses D2 for clock and D5 for data. You can use any INT or
In rules.mk:
-```makefile
+```make
PS2_MOUSE_ENABLE = yes
PS2_USE_INT = yes
```
@@ -65,14 +59,8 @@ In your keyboard config.h:
```c
#ifdef PS2_USE_INT
-#define PS2_CLOCK_PORT PORTD
-#define PS2_CLOCK_PIN PIND
-#define PS2_CLOCK_DDR DDRD
-#define PS2_CLOCK_BIT 2
-#define PS2_DATA_PORT PORTD
-#define PS2_DATA_PIN PIND
-#define PS2_DATA_DDR DDRD
-#define PS2_DATA_BIT 5
+#define PS2_CLOCK_PIN D2
+#define PS2_DATA_PIN D5
#define PS2_INT_INIT() do { \
EICRA |= ((1<` de
|----------|-------------|---------|
| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 |
| `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 |
+| `ISSI_3731_DEGHOST` | (Optional) Set this define to enable de-ghosting by halving Vcc during blanking time | |
| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | |
| `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | |
| `DRIVER_ADDR_1` | (Required) Address for the first RGB driver | |
@@ -49,10 +50,12 @@ Here is an example using 2 drivers.
!> Note the parentheses, this is so when `DRIVER_LED_TOTAL` is used in code and expanded, the values are added together before any additional math is applied to them. As an example, `rand() % (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)` will give very different results than `rand() % DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL`.
+For split keyboards using `RGB_MATRIX_SPLIT` with an LED driver, you can either have the same driver address or different driver addresses. If using different addresses, use `DRIVER_ADDR_1` for one and `DRIVER_ADDR_2` for the other one. Then, in `g_is31_leds`, fill out the correct driver index (0 or 1). If using one address, use `DRIVER_ADDR_1` for both, and use index 0 for `g_is31_leds`.
+
Define these arrays listing all the LEDs in your `.c`:
```c
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
@@ -71,7 +74,7 @@ Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet]
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3733 RGB controller. To enable it, add this to your `rules.mk`:
-```makefile
+```make
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3733
```
@@ -82,6 +85,9 @@ You can use between 1 and 4 IS31FL3733 IC's. Do not specify `DRIVER_ADDR_` de
|----------|-------------|---------|
| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 |
| `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 |
+| `ISSI_PWM_FREQUENCY` | (Optional) PWM Frequency Setting - IS31FL3733B only | 0 |
+| `ISSI_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
+| `ISSI_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | |
| `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | |
| `DRIVER_ADDR_1` | (Required) Address for the first RGB driver | |
@@ -93,6 +99,18 @@ You can use between 1 and 4 IS31FL3733 IC's. Do not specify `DRIVER_ADDR_` de
| `DRIVER_SYNC_3` | (Optional) Sync configuration for the third RGB driver | 0 |
| `DRIVER_SYNC_4` | (Optional) Sync configuration for the fourth RGB driver | 0 |
+The IS31FL3733 IC's have on-chip resistors that can be enabled to allow for de-ghosting of the RGB matrix. By default these resistors are not enabled (`ISSI_SWPULLUP`/`ISSI_CSPULLUP` are given the value of`PUR_0R`), the values that can be set to enable de-ghosting are as follows:
+
+| `ISSI_SWPULLUP/ISSI_CSPULLUP` | Description |
+|----------------------|-------------|
+| `PUR_0R` | (default) Do not use the on-chip resistors/enable de-ghosting |
+| `PUR_05KR` | The 0.5k Ohm resistor used during blanking period (t_NOL) |
+| `PUR_3KR` | The 3k Ohm resistor used at all times |
+| `PUR_4KR` | The 4k Ohm resistor used at all times |
+| `PUR_8KR` | The 8k Ohm resistor used at all times |
+| `PUR_16KR` | The 16k Ohm resistor used at all times |
+| `PUR_32KR` | The 32k Ohm resistor used during blanking period (t_NOL) |
+
Here is an example using 2 drivers.
```c
@@ -122,7 +140,7 @@ Currently only 4 drivers are supported, but it would be trivial to support all 8
Define these arrays listing all the LEDs in your `.c`:
```c
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
@@ -141,7 +159,7 @@ Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3737 RGB controller. To enable it, add this to your `rules.mk`:
-```makefile
+```make
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3737
```
@@ -153,11 +171,25 @@ Configure the hardware via your `config.h`:
|----------|-------------|---------|
| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 |
| `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 |
+| `ISSI_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
+| `ISSI_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | |
| `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | |
| `DRIVER_ADDR_1` | (Required) Address for the first RGB driver | |
| `DRIVER_ADDR_2` | (Optional) Address for the second RGB driver | |
+The IS31FL3737 IC's have on-chip resistors that can be enabled to allow for de-ghosting of the RGB matrix. By default these resistors are not enabled (`ISSI_SWPULLUP`/`ISSI_CSPULLUP` are given the value of`PUR_0R`), the values that can be set to enable de-ghosting are as follows:
+
+| `ISSI_SWPULLUP/ISSI_CSPULLUP` | Description |
+|----------------------|-------------|
+| `PUR_0R` | (default) Do not use the on-chip resistors/enable de-ghosting |
+| `PUR_05KR` | The 0.5k Ohm resistor used during blanking period (t_NOL) |
+| `PUR_1KR` | The 1k Ohm resistor used during blanking period (t_NOL) |
+| `PUR_2KR` | The 2k Ohm resistor used during blanking period (t_NOL) |
+| `PUR_4KR` | The 4k Ohm resistor used during blanking period (t_NOL) |
+| `PUR_8KR` | The 8k Ohm resistor during blanking period (t_NOL) |
+| `PUR_16KR` | The 16k Ohm resistor during blanking period (t_NOL) |
+| `PUR_32KR` | The 32k Ohm resistor used during blanking period (t_NOL) |
Here is an example using 2 drivers.
@@ -181,12 +213,12 @@ Here is an example using 2 drivers.
```
!> Note the parentheses, this is so when `DRIVER_LED_TOTAL` is used in code and expanded, the values are added together before any additional math is applied to them. As an example, `rand() % (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)` will give very different results than `rand() % DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL`.
-Currently only 2 drivers are supported, but it would be trivial to support all 4 combinations.
+Currently only 2 drivers are supported, but it would be trivial to support all 4 combinations.
Define these arrays listing all the LEDs in your `.c`:
```c
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
@@ -206,7 +238,7 @@ Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](
There is basic support for addressable RGB matrix lighting with a WS2811/WS2812{a,b,c} addressable LED strand. To enable it, add this to your `rules.mk`:
-```makefile
+```make
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
```
@@ -226,7 +258,7 @@ Configure the hardware via your `config.h`:
There is basic support for APA102 based addressable LED strands. To enable it, add this to your `rules.mk`:
-```makefile
+```make
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = APA102
```
@@ -246,7 +278,7 @@ Configure the hardware via your `config.h`:
### AW20216 :id=aw20216
There is basic support for addressable RGB matrix lighting with the SPI AW20216 RGB controller. To enable it, add this to your `rules.mk`:
-```makefile
+```make
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = AW20216
```
@@ -287,7 +319,7 @@ Here is an example using 2 drivers.
Define these arrays listing all the LEDs in your `.c`:
```c
-const aw_led __flash g_aw_leds[DRIVER_LED_TOTAL] = {
+const aw_led PROGMEM g_aw_leds[DRIVER_LED_TOTAL] = {
/* Each AW20216 channel is controlled by a register at some offset between 0x00
* and 0xD7 inclusive.
* See drivers/awinic/aw20216.h for the mapping between register offsets and
@@ -340,7 +372,7 @@ x = 224 / (NUMBER_OF_COLS - 1) * COL_POSITION
y = 64 / (NUMBER_OF_ROWS - 1) * ROW_POSITION
```
-Where NUMBER_OF_COLS, NUMBER_OF_ROWS, COL_POSITION, & ROW_POSITION are all based on the physical layout of your keyboard, not the electrical layout.
+Where NUMBER_OF_COLS, NUMBER_OF_ROWS, COL_POSITION, & ROW_POSITION are all based on the physical layout of your keyboard, not the electrical layout.
As mentioned earlier, the center of the keyboard by default is expected to be `{ 112, 32 }`, but this can be changed if you want to more accurately calculate the LED's physical `{ x, y }` positions. Keyboard designers can implement `#define RGB_MATRIX_CENTER { 112, 32 }` in their config.h file with the new center point of the keyboard, or where they want it to be allowing more possibilities for the `{ x, y }` values. Do note that the maximum value for x or y is 255, and the recommended maximum is 224 as this gives animations runoff room before they reset.
@@ -383,7 +415,7 @@ All RGB keycodes are currently shared with the RGBLIGHT system:
* `RGB_MODE_*` keycodes will generally work, but not all of the modes are currently mapped to the correct effects for the RGB Matrix system.
-`RGB_MODE_PLAIN`, `RGB_MODE_BREATHE`, `RGB_MODE_RAINBOW`, and `RGB_MATRIX_SWIRL` are the only ones that are mapped properly. The rest don't have a direct equivalent, and are not mapped.
+`RGB_MODE_PLAIN`, `RGB_MODE_BREATHE`, `RGB_MODE_RAINBOW`, and `RGB_MATRIX_SWIRL` are the only ones that are mapped properly. The rest don't have a direct equivalent, and are not mapped.
!> By default, if you have both the [RGB Light](feature_rgblight.md) and the RGB Matrix feature enabled, these keycodes will work for both features, at the same time. You can disable the keycode functionality by defining the `*_DISABLE_KEYCODES` option for the specific feature.
@@ -420,7 +452,9 @@ enum rgb_matrix_effects {
RGB_MATRIX_JELLYBEAN_RAINDROPS, // Randomly changes a single key's hue and saturation
RGB_MATRIX_HUE_BREATHING, // Hue shifts up a slight ammount at the same time, then shifts back
RGB_MATRIX_HUE_PENDULUM, // Hue shifts up a slight ammount in a wave to the right, then back to the left
- RGB_MATRIX_HUE_WAVE, // Hue shifts up a slight ammount and then back down in a wave to the right
+ RGB_MATRIX_HUE_WAVE, // Hue shifts up a slight ammount and then back down in a wave to the right
+ RGB_MATRIX_PIXEL_FRACTAL, // Single hue fractal filled keys pulsing horizontally out to edges
+ RGB_MATRIX_PIXEL_RAIN, // Randomly light keys with random hues
#if define(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
RGB_MATRIX_TYPING_HEATMAP, // How hot is your WPM!
RGB_MATRIX_DIGITAL_RAIN, // That famous computer simulation
@@ -443,51 +477,66 @@ enum rgb_matrix_effects {
};
```
-You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `config.h`:
-
-
-|Define |Description |
-|-------------------------------------------------------|-----------------------------------------------|
-|`#define DISABLE_RGB_MATRIX_ALPHAS_MODS` |Disables `RGB_MATRIX_ALPHAS_MODS` |
-|`#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Disables `RGB_MATRIX_GRADIENT_UP_DOWN` |
-|`#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT` |Disables `MATRIX_GRADIENT_LEFT_RIGHT` |
-|`#define DISABLE_RGB_MATRIX_BREATHING` |Disables `RGB_MATRIX_BREATHING` |
-|`#define DISABLE_RGB_MATRIX_BAND_SAT` |Disables `RGB_MATRIX_BAND_SAT` |
-|`#define DISABLE_RGB_MATRIX_BAND_VAL` |Disables `RGB_MATRIX_BAND_VAL` |
-|`#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT` |Disables `RGB_MATRIX_BAND_PINWHEEL_SAT` |
-|`#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL` |Disables `RGB_MATRIX_BAND_PINWHEEL_VAL` |
-|`#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT` |Disables `RGB_MATRIX_BAND_SPIRAL_SAT` |
-|`#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL` |Disables `RGB_MATRIX_BAND_SPIRAL_VAL` |
-|`#define DISABLE_RGB_MATRIX_CYCLE_ALL` |Disables `RGB_MATRIX_CYCLE_ALL` |
-|`#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT` |Disables `RGB_MATRIX_CYCLE_LEFT_RIGHT` |
-|`#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN` |Disables `RGB_MATRIX_CYCLE_UP_DOWN` |
-|`#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |
-|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN` |Disables `RGB_MATRIX_CYCLE_OUT_IN` |
-|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL` |Disables `RGB_MATRIX_CYCLE_OUT_IN_DUAL` |
-|`#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL` |Disables `RGB_MATRIX_CYCLE_PINWHEEL` |
-|`#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL` |Disables `RGB_MATRIX_CYCLE_SPIRAL` |
-|`#define DISABLE_RGB_MATRIX_DUAL_BEACON` |Disables `RGB_MATRIX_DUAL_BEACON` |
-|`#define DISABLE_RGB_MATRIX_RAINBOW_BEACON` |Disables `RGB_MATRIX_RAINBOW_BEACON` |
-|`#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Disables `RGB_MATRIX_RAINBOW_PINWHEELS` |
-|`#define DISABLE_RGB_MATRIX_RAINDROPS` |Disables `RGB_MATRIX_RAINDROPS` |
-|`#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Disables `RGB_MATRIX_JELLYBEAN_RAINDROPS` |
-|`#define DISABLE_RGB_MATRIX_HUE_BREATHING` |Disables `RGB_MATRIX_HUE_BREATHING` |
-|`#define DISABLE_RGB_MATRIX_HUE_PENDULUM` |Disables `RGB_MATRIX_HUE_PENDULUM` |
-|`#define DISABLE_RGB_MATRIX_HUE_WAVE ` |Disables `RGB_MATRIX_HUE_WAVE ` |
-|`#define DISABLE_RGB_MATRIX_TYPING_HEATMAP` |Disables `RGB_MATRIX_TYPING_HEATMAP` |
-|`#define DISABLE_RGB_MATRIX_DIGITAL_RAIN` |Disables `RGB_MATRIX_DIGITAL_RAIN` |
-|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |
-|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE` |Disables `RGB_MATRIX_SOLID_REACTIVE` |
-|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_WIDE` |
-|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
-|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS` |Disables `RGB_MATRIX_SOLID_REACTIVE_CROSS` |
-|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTICROSS`|
-|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS` |Disables `RGB_MATRIX_SOLID_REACTIVE_NEXUS` |
-|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS`|
-|`#define DISABLE_RGB_MATRIX_SPLASH` |Disables `RGB_MATRIX_SPLASH` |
-|`#define DISABLE_RGB_MATRIX_MULTISPLASH` |Disables `RGB_MATRIX_MULTISPLASH` |
-|`#define DISABLE_RGB_MATRIX_SOLID_SPLASH` |Disables `RGB_MATRIX_SOLID_SPLASH` |
-|`#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH` |Disables `RGB_MATRIX_SOLID_MULTISPLASH` |
+You can enable a single effect by defining `ENABLE_[EFFECT_NAME]` in your `config.h`:
+
+
+|Define |Description |
+|------------------------------------------------------|----------------------------------------------|
+|`#define ENABLE_RGB_MATRIX_ALPHAS_MODS` |Enables `RGB_MATRIX_ALPHAS_MODS` |
+|`#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Enables `RGB_MATRIX_GRADIENT_UP_DOWN` |
+|`#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT` |Enables `RGB_MATRIX_GRADIENT_LEFT_RIGHT` |
+|`#define ENABLE_RGB_MATRIX_BREATHING` |Enables `RGB_MATRIX_BREATHING` |
+|`#define ENABLE_RGB_MATRIX_BAND_SAT` |Enables `RGB_MATRIX_BAND_SAT` |
+|`#define ENABLE_RGB_MATRIX_BAND_VAL` |Enables `RGB_MATRIX_BAND_VAL` |
+|`#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT` |Enables `RGB_MATRIX_BAND_PINWHEEL_SAT` |
+|`#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL` |Enables `RGB_MATRIX_BAND_PINWHEEL_VAL` |
+|`#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT` |Enables `RGB_MATRIX_BAND_SPIRAL_SAT` |
+|`#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL` |Enables `RGB_MATRIX_BAND_SPIRAL_VAL` |
+|`#define ENABLE_RGB_MATRIX_CYCLE_ALL` |Enables `RGB_MATRIX_CYCLE_ALL` |
+|`#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT` |Enables `RGB_MATRIX_CYCLE_LEFT_RIGHT` |
+|`#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN` |Enables `RGB_MATRIX_CYCLE_UP_DOWN` |
+|`#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |Enables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |
+|`#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN` |Enables `RGB_MATRIX_CYCLE_OUT_IN` |
+|`#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL` |Enables `RGB_MATRIX_CYCLE_OUT_IN_DUAL` |
+|`#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL` |Enables `RGB_MATRIX_CYCLE_PINWHEEL` |
+|`#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL` |Enables `RGB_MATRIX_CYCLE_SPIRAL` |
+|`#define ENABLE_RGB_MATRIX_DUAL_BEACON` |Enables `RGB_MATRIX_DUAL_BEACON` |
+|`#define ENABLE_RGB_MATRIX_RAINBOW_BEACON` |Enables `RGB_MATRIX_RAINBOW_BEACON` |
+|`#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Enables `RGB_MATRIX_RAINBOW_PINWHEELS` |
+|`#define ENABLE_RGB_MATRIX_RAINDROPS` |Enables `RGB_MATRIX_RAINDROPS` |
+|`#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Enables `RGB_MATRIX_JELLYBEAN_RAINDROPS` |
+|`#define ENABLE_RGB_MATRIX_HUE_BREATHING` |Enables `RGB_MATRIX_HUE_BREATHING` |
+|`#define ENABLE_RGB_MATRIX_HUE_PENDULUM` |Enables `RGB_MATRIX_HUE_PENDULUM` |
+|`#define ENABLE_RGB_MATRIX_HUE_WAVE` |Enables `RGB_MATRIX_HUE_WAVE ` |
+|`#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL` |Enables `RGB_MATRIX_PIXEL_FRACTAL` |
+|`#define ENABLE_RGB_MATRIX_PIXEL_RAIN` |Enables `RGB_MATRIX_PIXEL_RAIN` |
+
+?> These modes don't require any additional defines.
+
+|Framebuffer Defines |Description |
+|------------------------------------------------------|----------------------------------------------|
+|`#define ENABLE_RGB_MATRIX_TYPING_HEATMAP` |Enables `RGB_MATRIX_TYPING_HEATMAP` |
+|`#define ENABLE_RGB_MATRIX_DIGITAL_RAIN` |Enables `RGB_MATRIX_DIGITAL_RAIN` |
+
+?> These modes also require the `RGB_MATRIX_FRAMEBUFFER_EFFECTS` define to be available.
+
+|Reactive Defines |Description |
+|------------------------------------------------------|----------------------------------------------|
+|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Enables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |
+|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE` |Enables `RGB_MATRIX_SOLID_REACTIVE` |
+|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE` |Enables `RGB_MATRIX_SOLID_REACTIVE_WIDE` |
+|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Enables `RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
+|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS` |Enables `RGB_MATRIX_SOLID_REACTIVE_CROSS` |
+|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS` |Enables `RGB_MATRIX_SOLID_REACTIVE_MULTICROSS`|
+|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS` |Enables `RGB_MATRIX_SOLID_REACTIVE_NEXUS` |
+|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Enables `RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS`|
+|`#define ENABLE_RGB_MATRIX_SPLASH` |Enables `RGB_MATRIX_SPLASH` |
+|`#define ENABLE_RGB_MATRIX_MULTISPLASH` |Enables `RGB_MATRIX_MULTISPLASH` |
+|`#define ENABLE_RGB_MATRIX_SOLID_SPLASH` |Enables `RGB_MATRIX_SOLID_SPLASH` |
+|`#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH` |Enables `RGB_MATRIX_SOLID_MULTISPLASH` |
+
+?> These modes also require the `RGB_MATRIX_KEYPRESSES` or `RGB_MATRIX_KEYRELEASES` define to be available.
+
### RGB Matrix Effect Typing Heatmap :id=rgb-matrix-effect-typing-heatmap
@@ -537,7 +586,7 @@ static bool my_cool_effect(effect_params_t* params) {
for (uint8_t i = led_min; i < led_max; i++) {
rgb_matrix_set_color(i, 0xff, 0xff, 0x00);
}
- return led_max < DRIVER_LED_TOTAL;
+ return rgb_matrix_check_finished_leds(led_max);
}
// e.g: A more complex effect, relying on external methods and state, with
@@ -551,8 +600,7 @@ static bool my_cool_effect2_complex_run(effect_params_t* params) {
for (uint8_t i = led_min; i < led_max; i++) {
rgb_matrix_set_color(i, 0xff, some_global_state++, 0xff);
}
-
- return led_max < DRIVER_LED_TOTAL;
+ return rgb_matrix_check_finished_leds(led_max);
}
static bool my_cool_effect2(effect_params_t* params) {
if (params->init) my_cool_effect2_complex_init(params);
@@ -694,7 +742,7 @@ Where `28` is an unused index from `eeconfig.h`.
### Indicators :id=indicators
-If you want to set custom indicators, such as an LED for Caps Lock, or layer indication, you can use the `rgb_matrix_indicators_kb` or `rgb_matrix_indicators_user` function for that:
+If you want to set custom indicators, such as an LED for Caps Lock, or layer indication, you can use the `rgb_matrix_indicators_kb` or `rgb_matrix_indicators_user` function for that:
```c
void rgb_matrix_indicators_kb(void) {
rgb_matrix_set_color(index, red, green, blue);
@@ -749,18 +797,18 @@ This example sets the modifiers to be a specific color based on the layer state.
```c
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
HSV hsv = {0, 255, 255};
-
+
if (layer_state_is(layer_state, 2)) {
hsv = {130, 255, 255};
} else {
hsv = {30, 255, 255};
}
-
+
if (hsv.v > rgb_matrix_get_val()) {
hsv.v = rgb_matrix_get_val();
}
RGB rgb = hsv_to_rgb(hsv);
-
+
for (uint8_t i = led_min; i <= led_max; i++) {
if (HAS_FLAGS(g_led_config.flags[i], 0x01)) { // 0x01 == LED_FLAG_MODIFIER
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
@@ -769,7 +817,7 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
}
```
-If you want to indicate a Host LED status (caps lock, num lock, etc), you can use something like this to light up the caps lock key:
+If you want to indicate a Host LED status (caps lock, num lock, etc), you can use something like this to light up the caps lock key:
```c
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
diff --git a/docs/feature_stenography.md b/docs/feature_stenography.md
index d5445b7f8df..691d83f9706 100644
--- a/docs/feature_stenography.md
+++ b/docs/feature_stenography.md
@@ -32,7 +32,7 @@ GeminiPR encodes 42 keys into a 6-byte packet. While TX Bolt contains everything
Firstly, enable steno in your keymap's Makefile. You may also need disable mousekeys, extra keys, or another USB endpoint to prevent conflicts. The builtin USB stack for some processors only supports a certain number of USB endpoints and the virtual serial port needed for steno fills 3 of them.
-```makefile
+```make
STENO_ENABLE = yes
MOUSEKEY_ENABLE = no
```
diff --git a/docs/feature_swap_hands.md b/docs/feature_swap_hands.md
index cbc574b6b86..b0239bb802c 100644
--- a/docs/feature_swap_hands.md
+++ b/docs/feature_swap_hands.md
@@ -6,7 +6,7 @@ The swap-hands action allows support for one-handed typing without requiring a s
The configuration table is a simple 2-dimensional array to map from column/row to new column/row. Example `hand_swap_config` for Planck:
-```C
+```c
const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
{{11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
{{11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
diff --git a/docs/feature_tap_dance.md b/docs/feature_tap_dance.md
index d1988b9b7d3..40f9802db33 100644
--- a/docs/feature_tap_dance.md
+++ b/docs/feature_tap_dance.md
@@ -299,7 +299,7 @@ void x_finished(qk_tap_dance_state_t *state, void *user_data) {
xtap_state.state = cur_dance(state);
switch (xtap_state.state) {
case TD_SINGLE_TAP: register_code(KC_X); break;
- case TD_SINGLE_HOLD: register_code(KC_LCTRL); break;
+ case TD_SINGLE_HOLD: register_code(KC_LCTL); break;
case TD_DOUBLE_TAP: register_code(KC_ESC); break;
case TD_DOUBLE_HOLD: register_code(KC_LALT); break;
// Last case is for fast typing. Assuming your key is `f`:
@@ -312,7 +312,7 @@ void x_finished(qk_tap_dance_state_t *state, void *user_data) {
void x_reset(qk_tap_dance_state_t *state, void *user_data) {
switch (xtap_state.state) {
case TD_SINGLE_TAP: unregister_code(KC_X); break;
- case TD_SINGLE_HOLD: unregister_code(KC_LCTRL); break;
+ case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break;
case TD_DOUBLE_TAP: unregister_code(KC_ESC); break;
case TD_DOUBLE_HOLD: unregister_code(KC_LALT);
case TD_DOUBLE_SINGLE_TAP: unregister_code(KC_X);
diff --git a/docs/feature_userspace.md b/docs/feature_userspace.md
index 8b001e3ce21..8c617fe33a0 100644
--- a/docs/feature_userspace.md
+++ b/docs/feature_userspace.md
@@ -240,7 +240,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
For boards that may not have a shift button (such as on a macro pad), we need a way to always include the bootloader option. To do that, add the following to the `rules.mk` in your userspace folder:
-```make
+```make
ifeq ($(strip $(FLASH_BOOTLOADER)), yes)
OPT_DEFS += -DFLASH_BOOTLOADER
endif
@@ -252,4 +252,4 @@ Also, holding Shift will add the flash target (`:flash`) to the command. Holdin
And for the boards that lack a shift key, or that you want to always attempt the flashing part, you can add `FLASH_BOOTLOADER = yes` to the `rules.mk` of that keymap.
-?> This should flash the newly compiled firmware automatically, using the correct utility, based on the bootloader settings (or default to just generating the HEX file). However, it should be noted that this may not work on all systems. AVRDUDE doesn't work on WSL, namely. And this doesn't support BootloadHID or mdloader.
+?> This should flash the newly compiled firmware automatically, using the correct utility, based on the bootloader settings (or default to just generating the HEX file). However, it should be noted that this may not work on all systems. AVRDUDE doesn't work on WSL, namely.
diff --git a/docs/feature_velocikey.md b/docs/feature_velocikey.md
index 93dd7de9406..14d4be314d0 100644
--- a/docs/feature_velocikey.md
+++ b/docs/feature_velocikey.md
@@ -6,7 +6,6 @@ Velocikey is a feature that lets you control the speed of lighting effects (like
For Velocikey to take effect, there are two steps. First, when compiling your keyboard, you'll need to set `VELOCIKEY_ENABLE=yes` in `rules.mk`, e.g.:
```
-BOOTMAGIC_ENABLE = no
MOUSEKEY_ENABLE = no
STENO_ENABLE = no
EXTRAKEY_ENABLE = yes
diff --git a/docs/feature_wpm.md b/docs/feature_wpm.md
index e2fac1ecea0..87145c97e3d 100644
--- a/docs/feature_wpm.md
+++ b/docs/feature_wpm.md
@@ -10,11 +10,23 @@ For split keyboards using soft serial, the computed WPM score will be available
## Configuration
-|Define |Default | Description |
-|-----------------------------|--------------|------------------------------------------------------------------------------------------|
-|`WPM_SMOOTHING` |`0.0487` | Sets the smoothing to about 40 keystrokes |
-|`WPM_ESTIMATED_WORD_SIZE` |`5` | This is the value used when estimating average word size (for regression and normal use) |
-|`WPM_ALLOW_COUNT_REGRESSOIN` |_Not defined_ | If defined allows the WPM to be decreased when hitting Delete or Backspace |
+| Define | Default | Description |
+|------------------------------|---------------|------------------------------------------------------------------------------------------|
+| `WPM_ESTIMATED_WORD_SIZE` | `5` | This is the value used when estimating average word size (for regression and normal use) |
+| `WPM_ALLOW_COUNT_REGRESSION` | _Not defined_ | If defined allows the WPM to be decreased when hitting Delete or Backspace |
+| `WPM_UNFILTERED` | _Not defined_ | If undefined (the default), WPM values will be smoothed to avoid sudden changes in value |
+| `WPM_SAMPLE_SECONDS` | `5` | This defines how many seconds of typing to average, when calculating WPM |
+| `WPM_SAMPLE_PERIODS` | `50` | This defines how many sampling periods to use when calculating WPM |
+| `WPM_LAUNCH_CONTROL` | _Not defined_ | If defined, WPM values will be calculated using partial buffers when typing begins |
+
+'WPM_UNFILTERED' is potentially useful if you're filtering data in some other way (and also because it reduces the code required for the WPM feature), or if reducing measurement latency to a minimum is important for you.
+
+Increasing 'WPM_SAMPLE_SECONDS' will give more smoothly changing WPM values at the expense of slightly more latency to the WPM calculation.
+
+Increasing 'WPM_SAMPLE_PERIODS' will improve the smoothness at which WPM decays once typing stops, at a cost of approximately this many bytes of firmware space.
+
+If 'WPM_LAUNCH_CONTROL' is defined, whenever WPM drops to zero, the next time typing begins WPM will be calculated based only on the time since that typing began, instead of the whole period of time specified by WPM_SAMPLE_SECONDS. This results in reaching an accurate WPM value much faster, even when filtering is enabled and a large WPM_SAMPLE_SECONDS value is specified.
+
## Public Functions
|Function |Description |
@@ -35,7 +47,7 @@ bool wpm_keycode_user(uint16_t keycode) {
} else if (keycode > 0xFF) {
keycode = 0;
}
- if ((keycode >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLASH)) {
+ if ((keycode >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLSH)) {
return true;
}
diff --git a/docs/flashing_bootloadhid.md b/docs/flashing_bootloadhid.md
index 9879ec999ee..213c7c1321a 100644
--- a/docs/flashing_bootloadhid.md
+++ b/docs/flashing_bootloadhid.md
@@ -44,7 +44,7 @@ For native Windows flashing, the `bootloadHID.exe` can be used outside of the MS
### Linux Manual Installation
1. Install libusb development dependency:
- ```bash
+ ```
# This depends on OS - for Debian the following works
sudo apt-get install libusb-dev
```
diff --git a/docs/fr-fr/cli.md b/docs/fr-fr/cli.md
index bfa060f2add..917a9315bc2 100644
--- a/docs/fr-fr/cli.md
+++ b/docs/fr-fr/cli.md
@@ -48,25 +48,6 @@ Nous recherchons des gens pour créer et maintenir un paquet `qmk` pour plus de
* Installez en utilisant un virtualenv
* Expliquez à l'utilisateur de définir la variable d'environnement `QMK_Home` pour "check out" les sources du firmware à un autre endroit que `~/qmk_firmware`.
-# CLI locale
-
-Si vous ne voulez pas utiliser la CLI globale, il y a une CLI locale empaquetée avec `qmk_firmware`. Vous pouvez le trouver dans `qmk_firmware/bin/qmk`. Vous pouvez lancer la commande `qmk` depuis n'importe quel répertoire et elle fonctionnera toujours sur cette copie de `qmk_firmware`.
-
-**Exemple**:
-
-```
-$ ~/qmk_firmware/bin/qmk hello
-Ψ Hello, World!
-```
-
-## Limitations de la CLI locale
-
-Il y a quelques limitations à la CLI locale comparé à la globale:
-
-* La CLI locale ne supporte pas `qmk setup` ou `qmk clone`
-* La CLI locale n'opère pas sur le même arbre `qmk_firmware`, même si vous avez plusieurs dépôts clonés.
-* La CLI locale ne s'exécute pas dans un virtualenv, donc il y a des risques que des dépendances seront en conflit
-
# Les commandes CLI
## `qmk compile`
diff --git a/docs/fr-fr/faq_debug.md b/docs/fr-fr/faq_debug.md
index 3b13b96b556..8868744f737 100644
--- a/docs/fr-fr/faq_debug.md
+++ b/docs/fr-fr/faq_debug.md
@@ -85,10 +85,6 @@ Premièrement, vous devez compiler le firmware avec l'option de compilation `NKR
Essayez la commande `Magic` **N** (`LShift+RShift+N` par défaut) si **NKRO** ne fonctionne toujours pas. Vous pouvez utiliser cette commande pour basculer temporairement entre le mode **NKRO** et **6KRO**. Sous certaines conditions, **NKRO** ne fonctionnera pas et vous devrez basculer en **6KRO**, en particulier lorsque vous êtes dans le BIOS.
-Si votre firmware est compilé avec `BOOTMAGIC_ENABLE` vous devrez l'activer avec la commande `BootMagic` **N** (`Espace+N` par défaut). Cette option est enregistrée dans l'EEPROM et sera gardé entre deux cycles de démarrage.
-
-https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch
-
## Le TrackPoint a besoin Circuit de réinitialisation (Support de souris PS/2)
Sans circuit de réinitialisation vous allez avoir des résultats inconsistants à cause de la mauvaise initialisation du matériel. Regardez le schéma du circuit du TPM754.
diff --git a/docs/fr-fr/faq_keymap.md b/docs/fr-fr/faq_keymap.md
index 374a0052270..cc0700ab8e7 100644
--- a/docs/fr-fr/faq_keymap.md
+++ b/docs/fr-fr/faq_keymap.md
@@ -6,7 +6,7 @@ Cette page couvre les questions souvent posées à propos des keymaps. Si vous n
Regardez [Keycodes](keycodes.md) pour une liste des keycodes disponibles. Certains keycodes spécifiques ont des documentations plus complètes de disponible.
-Les keycodes sont définies dans [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/keycode.h).
+Les keycodes sont définies dans [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/keycode.h).
## Quels sont les keycodes par défaut ?
diff --git a/docs/fr-fr/getting_started_github.md b/docs/fr-fr/getting_started_github.md
index 0f3982ea290..522b09a03e8 100644
--- a/docs/fr-fr/getting_started_github.md
+++ b/docs/fr-fr/getting_started_github.md
@@ -32,7 +32,6 @@ Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
-Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
```
Vous avez maintenant votre fork QMK sur votre machine locale, vous pouvez ajouter votre keymap, la compiler et la flasher sur votre board. Une fois heureux avec vos changements, vous pouvez les ajouter, commit, et pousser vers votre fork comme suit:
diff --git a/docs/getting_started_docker.md b/docs/getting_started_docker.md
index f9c3b366a4f..c4da8af968d 100644
--- a/docs/getting_started_docker.md
+++ b/docs/getting_started_docker.md
@@ -12,13 +12,13 @@ The main prerequisite is a working `docker` or `podman` install.
Acquire a local copy of the QMK's repository (including submodules):
-```bash
+```
git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
cd qmk_firmware
```
Run the following command to build a keymap:
-```bash
+```
util/docker_build.sh :
# For example: util/docker_build.sh planck/rev6:default
```
@@ -27,14 +27,14 @@ This will compile the desired keyboard/keymap and leave the resulting `.hex` or
There is also support for building _and_ flashing the keyboard straight from Docker by specifying the `target` as well:
-```bash
+```
util/docker_build.sh keyboard:keymap:target
# For example: util/docker_build.sh planck/rev6:default:flash
```
You can also start the script without any parameters, in which case it will ask you to input the build parameters one by one, which you may find easier to use:
-```bash
+```
util/docker_build.sh
# Reads parameters as input (leave blank for all keyboards/keymaps)
```
@@ -42,7 +42,7 @@ util/docker_build.sh
You can manually set which container runtime you want to use by setting the `RUNTIME` environment variable to it's name or path.
By default docker or podman are automatically detected and docker is preferred over podman.
-```bash
+```
RUNTIME="podman" util/docker_build.sh keyboard:keymap:target
```
diff --git a/docs/getting_started_github.md b/docs/getting_started_github.md
index e3720b88696..9232bc62296 100644
--- a/docs/getting_started_github.md
+++ b/docs/getting_started_github.md
@@ -32,7 +32,6 @@ Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
-Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
```
You now have your QMK fork on your local machine, and you can add your keymap, compile it and flash it to your board. Once you're happy with your changes, you can add, commit, and push them to your fork like this:
diff --git a/docs/getting_started_make_guide.md b/docs/getting_started_make_guide.md
index 70390a51058..1a7e276098a 100644
--- a/docs/getting_started_make_guide.md
+++ b/docs/getting_started_make_guide.md
@@ -55,7 +55,7 @@ Set these variables to `no` to disable them, and `yes` to enable them.
`BOOTMAGIC_ENABLE`
-This allows you to hold a key and the salt key (space by default) and have access to a various EEPROM settings that persist over power loss. It's advised you keep this disabled, as the settings are often changed by accident, and produce confusing results that makes it difficult to debug. It's one of the more common problems encountered in help sessions.
+This allows you to hold a key (usually Escape by default) to reset the EEPROM settings that persist over power loss and ready your keyboard to accept new firmware.
`MOUSEKEY_ENABLE`
@@ -125,10 +125,6 @@ This allows you output audio on the C6 pin (needs abstracting). See the [audio p
Use this to debug changes to variable values, see the [tracing variables](unit_testing.md#tracing-variables) section of the Unit Testing page for more information.
-`API_SYSEX_ENABLE`
-
-This enables using the Quantum SYSEX API to send strings (somewhere?)
-
`KEY_LOCK_ENABLE`
This enables [key lock](feature_key_lock.md).
@@ -149,6 +145,10 @@ Lets you replace the default matrix scanning routine with your own code. For fur
Lets you replace the default key debouncing routine with an alternative one. If `custom` you will need to provide your own implementation.
+`DEFERRED_EXEC_ENABLE`
+
+Enables deferred executor support -- timed delays before callbacks are invoked. See [deferred execution](custom_quantum_functions.md#deferred-execution) for more information.
+
## Customizing Makefile Options on a Per-Keymap Basis
If your keymap directory has a file called `rules.mk` any options you set in that file will take precedence over other `rules.mk` options for your particular keyboard.
diff --git a/docs/getting_started_vagrant.md b/docs/getting_started_vagrant.md
index 114f8756714..b5b5ce1539d 100644
--- a/docs/getting_started_vagrant.md
+++ b/docs/getting_started_vagrant.md
@@ -31,26 +31,26 @@ The development environment is configured to run the QMK Docker image, `qmkfm/qm
### Why am I seeing issues under Virtualbox?
Certain versions of Virtualbox 5 appear to have an incompatibility with the Virtualbox extensions installed in the boxes in this Vagrantfile. If you encounter any issues with the /vagrant mount not succeeding, please upgrade your version of Virtualbox to at least 5.0.12. **Alternately, you can try running the following command:**
-```console
+```
vagrant plugin install vagrant-vbguest
```
### How do I remove an existing environment?
Finished with your environment? From anywhere inside the folder where you checked out this project, Execute:
-```console
+```
vagrant destroy
```
### What if I want to use Docker directly?
Want to benefit from the Vagrant workflow without a virtual machine? The Vagrantfile is configured to bypass running a virtual machine, and run the container directly. Execute the following when bringing up the environment to force the use of Docker:
-```console
+```
vagrant up --provider=docker
```
### How do I access the virtual machine instead of the Docker container?
Execute the following to bypass the `vagrant` user booting directly to the official qmk builder image:
-```console
+```
vagrant ssh -c 'sudo -i'
```
diff --git a/docs/hardware_drivers.md b/docs/hardware_drivers.md
index 7e89c0d2b9a..a157501326d 100644
--- a/docs/hardware_drivers.md
+++ b/docs/hardware_drivers.md
@@ -18,10 +18,6 @@ Support for addressing pins on the ProMicro by their Arduino name rather than th
Support for SSD1306 based OLED displays. For more information see the [OLED Driver Feature](feature_oled_driver.md) page.
-## uGFX
-
-You can make use of uGFX within QMK to drive character and graphic LCDs, LED arrays, OLED, TFT, and other display technologies. This needs to be better documented, if you are trying to do this and reading the code doesn't help please [open an issue](https://github.com/qmk/qmk_firmware/issues/new) and we can help you through the process.
-
## WS2812
Support for WS2811/WS2812{a,b,c} LED's. For more information see the [RGB Light](feature_rgblight.md) page.
diff --git a/docs/hardware_keyboard_guidelines.md b/docs/hardware_keyboard_guidelines.md
index 7630b44e0c4..be55356b17f 100644
--- a/docs/hardware_keyboard_guidelines.md
+++ b/docs/hardware_keyboard_guidelines.md
@@ -144,10 +144,38 @@ The `rules.mk` file can also be placed in a sub-folder, and its reading order is
* `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/rules.mk`
* `keyboards/top_folder/keymaps/a_keymap/rules.mk`
* `users/a_user_folder/rules.mk`
+ * `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/post_rules.mk`
+ * `keyboards/top_folder/sub_1/sub_2/sub_3/post_rules.mk`
+ * `keyboards/top_folder/sub_1/sub_2/post_rules.mk`
+ * `keyboards/top_folder/sub_1/post_rules.mk`
+* `keyboards/top_folder/post_rules.mk`
* `common_features.mk`
Many of the settings written in the `rules.mk` file are interpreted by `common_features.mk`, which sets the necessary source files and compiler options.
+The `post_rules.mk` file can interpret `features` of a keyboard-level before `common_features.mk`. For example, when your designed keyboard has the option to implement backlighting or underglow using rgblight.c, writing the following in the `post_rules.mk` makes it easier for the user to configure the `rules.mk`.
+
+* `keyboards/top_folder/keymaps/a_keymap/rules.mk`
+ ```make
+ # Please set the following according to the selection of the hardware implementation option.
+ RGBLED_OPTION_TYPE = backlight ## none, backlight or underglow
+ ```
+* `keyboards/top_folder/post_rules.mk`
+ ```make
+ ifeq ($(filter $(strip $(RGBLED_OPTION_TYPE))x, nonex backlightx underglowx x),)
+ $(error unknown RGBLED_OPTION_TYPE value "$(RGBLED_OPTION_TYPE)")
+ endif
+
+ ifeq ($(strip $(RGBLED_OPTION_TYPE)),backlight)
+ RGBLIGHT_ENABLE = yes
+ OPT_DEFS += -DRGBLED_NUM=30
+ endif
+ ifeq ($(strip $(RGBLED_OPTION_TYPE)),underglow)
+ RGBLIGHT_ENABLE = yes
+ OPT_DEFS += -DRGBLED_NUM=6
+ endif
+ ```
+
?> See `build_keyboard.mk` and `common_features.mk` for more details.
### ``
@@ -227,8 +255,6 @@ The year should be the first year the file is created. If work was done to that
The core of QMK is licensed under the [GNU General Public License](https://www.gnu.org/licenses/licenses.en.html). If you are shipping binaries for AVR processors you may choose either [GPLv2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) or [GPLv3](https://www.gnu.org/licenses/gpl.html). If you are shipping binaries for ARM processors you must choose [GPL Version 3](https://www.gnu.org/licenses/gpl.html) to comply with the [ChibiOS](https://www.chibios.org) GPLv3 license.
-If your keyboard makes use of the [uGFX](https://ugfx.io) features within QMK you must comply with the [uGFX License](https://ugfx.io/license.html), which requires a separate commercial license before selling a device containing uGFX.
-
## Technical Details
If you're looking for more information on making your keyboard work with QMK, [check out the hardware section](hardware.md)!
diff --git a/docs/he-il/getting_started_github.md b/docs/he-il/getting_started_github.md
index 900852effd0..ca79e40f9a6 100644
--- a/docs/he-il/getting_started_github.md
+++ b/docs/he-il/getting_started_github.md
@@ -35,7 +35,6 @@ Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
-Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
```
diff --git a/docs/how_keyboards_work.md b/docs/how_keyboards_work.md
index 3dcbc645222..36cbfb4d9a6 100644
--- a/docs/how_keyboards_work.md
+++ b/docs/how_keyboards_work.md
@@ -9,7 +9,7 @@ firmware directly.
Whenever you type on 1 particular key, here is the chain of actions taking
place:
-``` text
+```
+------+ +-----+ +----------+ +----------+ +----+
| User |-------->| Key |------>| Firmware |----->| USB wire |---->| OS |
+------+ +-----+ +----------+ +----------+ +----+
diff --git a/docs/i2c_driver.md b/docs/i2c_driver.md
index 3ec34a0f87f..95c588af441 100644
--- a/docs/i2c_driver.md
+++ b/docs/i2c_driver.md
@@ -62,16 +62,13 @@ Then, modify your board's `mcuconf.h` to enable the peripheral you've chosen, fo
Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.
-|`config.h` Overrride |Description |Default|
-|------------------------|-------------------------------------------------------------------------------------------|-------|
-|`I2C_DRIVER` |I2C peripheral to use - I2C1 -> `I2CD1`, I2C2 -> `I2CD2` etc. |`I2CD1`|
-|`I2C1_BANK` (deprecated)|The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`), superseded by `I2C1_SCL_BANK`/`I2C1_SDA_BANK`|`GPIOB`|
-|`I2C1_SCL_BANK` |The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SCL |`GPIOB`|
-|`I2C1_SCL` |The pin number for SCL (0-15) |`6` |
-|`I2C1_SCL_PAL_MODE` |The alternate function mode for SCL |`4` |
-|`I2C1_SDA_BANK` |The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SDA |`GPIOB`|
-|`I2C1_SDA` |The pin number for SDA (0-15) |`7` |
-|`I2C1_SDA_PAL_MODE` |The alternate function mode for SDA |`4` |
+|`config.h` Overrride |Description |Default|
+|------------------------|--------------------------------------------------------------|-------|
+|`I2C_DRIVER` |I2C peripheral to use - I2C1 -> `I2CD1`, I2C2 -> `I2CD2` etc. |`I2CD1`|
+|`I2C1_SCL_PIN` |The pin definition for SCL |`B6` |
+|`I2C1_SCL_PAL_MODE` |The alternate function mode for SCL |`4` |
+|`I2C1_SDA_PIN` |The pin definition for SDA |`B7` |
+|`I2C1_SDA_PAL_MODE` |The alternate function mode for SDA |`4` |
The following configuration values depend on the specific MCU in use.
@@ -190,7 +187,7 @@ Receive multiple bytes from the selected SPI device.
### `i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)`
-Writes to a register on the I2C device.
+Writes to a register with an 8-bit address on the I2C device.
#### Arguments
@@ -211,9 +208,32 @@ Writes to a register on the I2C device.
---
+### `i2c_status_t i2c_writeReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)`
+
+Writes to a register with a 16-bit address (big endian) on the I2C device.
+
+#### Arguments
+
+ - `uint8_t devaddr`
+ The 7-bit I2C address of the device.
+ - `uint16_t regaddr`
+ The register address to write to.
+ - `uint8_t *data`
+ A pointer to the data to transmit.
+ - `uint16_t length`
+ The number of bytes to write. Take care not to overrun the length of `data`.
+ - `uint16_t timeout`
+ The time in milliseconds to wait for a response from the target device.
+
+#### Return Value
+
+`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
+
+---
+
### `i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)`
-Reads from a register on the I2C device.
+Reads from a register with an 8-bit address on the I2C device.
#### Arguments
@@ -232,6 +252,27 @@ Reads from a register on the I2C device.
---
+### `i2c_status_t i2c_readReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)`
+
+Reads from a register with a 16-bit address (big endian) on the I2C device.
+
+#### Arguments
+
+ - `uint8_t devaddr`
+ The 7-bit I2C address of the device.
+ - `uint16_t regaddr`
+ The register address to read from.
+ - `uint16_t length`
+ The number of bytes to read. Take care not to overrun the length of `data`.
+ - `uint16_t timeout`
+ The time in milliseconds to wait for a response from the target device.
+
+#### Return Value
+
+`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
+
+---
+
### `i2c_status_t i2c_stop(void)`
Stop the current I2C transaction.
diff --git a/docs/internals_gpio_control.md b/docs/internals_gpio_control.md
index 21a3bd661e7..ccd3f8c74d9 100644
--- a/docs/internals_gpio_control.md
+++ b/docs/internals_gpio_control.md
@@ -4,7 +4,7 @@ QMK has a GPIO control abstraction layer which is microcontroller agnostic. This
## Functions :id=functions
-The following functions provide basic control of GPIOs and are found in `tmk_core/common//gpio.h`.
+The following functions provide basic control of GPIOs and are found in `platforms//gpio.h`.
|Function |Description | Old AVR Examples | Old ChibiOS/ARM Examples |
|------------------------|--------------------------------------------------|-------------------------------------------------|-------------------------------------------------|
diff --git a/docs/ja/compatible_microcontrollers.md b/docs/ja/compatible_microcontrollers.md
index 7a3484fa8c8..23f32bbb60e 100644
--- a/docs/ja/compatible_microcontrollers.md
+++ b/docs/ja/compatible_microcontrollers.md
@@ -32,6 +32,7 @@ QMK は十分な容量のフラッシュメモリを備えた USB 対応 AVR ま
* [STM32F103](https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html)
* [STM32F303](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html)
* [STM32F401](https://www.st.com/en/microcontrollers-microprocessors/stm32f401.html)
+* [STM32F405](https://www.st.com/en/microcontrollers-microprocessors/stm32f405-415.html)
* [STM32F407](https://www.st.com/en/microcontrollers-microprocessors/stm32f407-417.html)
* [STM32F411](https://www.st.com/en/microcontrollers-microprocessors/stm32f411.html)
* [STM32F446](https://www.st.com/en/microcontrollers-microprocessors/stm32f446.html)
diff --git a/docs/ja/config_options.md b/docs/ja/config_options.md
index 18fe9489b96..fb43d015f20 100644
--- a/docs/ja/config_options.md
+++ b/docs/ja/config_options.md
@@ -358,7 +358,7 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
これらを使って特定の機能のビルドを有効または無効にします。有効にすればするほどファームウェアが大きくなり、MCU には大きすぎるファームウェアを構築するリスクがあります。
* `BOOTMAGIC_ENABLE`
- * 仮想 DIP スイッチ設定
+ * ブートマジックライトを有効にします
* `MOUSEKEY_ENABLE`
* マウスキー
* `EXTRAKEY_ENABLE`
diff --git a/docs/ja/faq_keymap.md b/docs/ja/faq_keymap.md
index fb44e316b78..59c7d206a1c 100644
--- a/docs/ja/faq_keymap.md
+++ b/docs/ja/faq_keymap.md
@@ -10,7 +10,7 @@
## どのキーコードを使えますか?
あなたが利用可能なキーコードのインデックスについては、[キーコード](ja/keycodes.md)を見てください。より広範なドキュメントがある場合は、そこからリンクしてあります。
-キーコードは実際には [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/keycode.h) で定義されています。
+キーコードは実際には [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/keycode.h) で定義されています。
## デフォルトのキーコードとは何か?
diff --git a/docs/ja/faq_misc.md b/docs/ja/faq_misc.md
index e9a35ef329c..38917df2eec 100644
--- a/docs/ja/faq_misc.md
+++ b/docs/ja/faq_misc.md
@@ -39,10 +39,6 @@ Size after:
**NKRO** がまだ動作しない場合は、`Magic` **N** コマンド(デフォルトでは `LShift+RShift+N`)を試してみてください。**NKRO** モードと **6KRO** モード間を一時的に切り替えるためにこのコマンドを使うことができます。**NKRO** が機能しない状況、特に BIOS の場合は **6KRO** モードに切り替える必要があります。
-ファームウェアを `BOOTMAGIC_ENABLE` でビルドした場合、`ブートマジック` **N** コマンドで切り替える必要があります(デフォルトでは `Space+N`)。この設定は EEPROM に格納され、電源を入れ直しても保持されます。
-
-https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch
-
## トラックポイントははリセット回路が必要です (PS/2 マウスサポート)
リセット回路が無いとハードウェアの不適切な初期化のために一貫性の無い結果になります。TPM754 の回路図を見てください:
diff --git a/docs/ja/feature_haptic_feedback.md b/docs/ja/feature_haptic_feedback.md
index 15807972532..687788014aa 100644
--- a/docs/ja/feature_haptic_feedback.md
+++ b/docs/ja/feature_haptic_feedback.md
@@ -9,9 +9,12 @@
現在のところ、`rules.mk` で触覚フィードバック用に以下のオプションを利用可能です:
-`HAPTIC_ENABLE += DRV2605L`
+```
+HAPTIC_ENABLE = yes
-`HAPTIC_ENABLE += SOLENOID`
+HAPTIC_DRIVER += DRV2605L
+HAPTIC_DRIVER += SOLENOID
+```
## サポートされる既知のハードウェア
diff --git a/docs/ja/feature_layers.md b/docs/ja/feature_layers.md
index 011f0e0ef19..ca3e0558357 100644
--- a/docs/ja/feature_layers.md
+++ b/docs/ja/feature_layers.md
@@ -50,7 +50,7 @@ QMK を使い始めたばかりの場合は、全てを単純にしたいでし
レイヤーは番号順に上に積み重なっています。キーの押下の動作を決定する時に、QMK は上から順にレイヤーを走査し、`KC_TRNS` に設定されていない最初のアクティブなレイヤーに到達すると停止します。結果として、現在のレイヤーよりも数値的に低いレイヤーをアクティブにし、現在のレイヤー(あるいはアクティブでターゲットレイヤーよりも高い別のレイヤー)に `KC_TRNS` 以外のものがある場合、それが送信されるキーであり、アクティブ化したばかりのレイヤー上のキーではありません。これが、ほとんどの人の "なぜレイヤーが切り替わらないのか" 問題の原因です。
-場合によっては、マクロ内あるいはタップダンスルーチンの一部としてレイヤーを切り替えほうが良いかもしれません。`layer_on` はレイヤーをアクティブにし、`layer_off` はそれを非アクティブにします。もっと多くのレイヤーに関する関数は、[action_layer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/action_layer.h) で見つけることができます。
+場合によっては、マクロ内あるいはタップダンスルーチンの一部としてレイヤーを切り替えほうが良いかもしれません。`layer_on` はレイヤーをアクティブにし、`layer_off` はそれを非アクティブにします。もっと多くのレイヤーに関する関数は、[action_layer.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/action_layer.h) で見つけることができます。
## 関数 :id=functions
diff --git a/docs/ja/feature_led_matrix.md b/docs/ja/feature_led_matrix.md
index 6511b282493..2b1979ec68b 100644
--- a/docs/ja/feature_led_matrix.md
+++ b/docs/ja/feature_led_matrix.md
@@ -52,7 +52,7 @@ I2C IS31FL3731 RGB コントローラを使ったアドレス指定可能な LED
`.c` に全ての LED を列挙する配列を定義します:
- const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+ const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* これらの位置については IS31 マニュアルを参照してください
* driver
* | LED address
diff --git a/docs/ja/feature_ps2_mouse.md b/docs/ja/feature_ps2_mouse.md
index 3d694113074..569934c1876 100644
--- a/docs/ja/feature_ps2_mouse.md
+++ b/docs/ja/feature_ps2_mouse.md
@@ -43,14 +43,8 @@ PS2_USE_BUSYWAIT = yes
```c
#ifdef PS2_USE_BUSYWAIT
-# define PS2_CLOCK_PORT PORTD
-# define PS2_CLOCK_PIN PIND
-# define PS2_CLOCK_DDR DDRD
-# define PS2_CLOCK_BIT 1
-# define PS2_DATA_PORT PORTD
-# define PS2_DATA_PIN PIND
-# define PS2_DATA_DDR DDRD
-# define PS2_DATA_BIT 2
+# define PS2_CLOCK_PIN D1
+# define PS2_DATA_PIN D2
#endif
```
@@ -69,14 +63,8 @@ PS2_USE_INT = yes
```c
#ifdef PS2_USE_INT
-#define PS2_CLOCK_PORT PORTD
-#define PS2_CLOCK_PIN PIND
-#define PS2_CLOCK_DDR DDRD
-#define PS2_CLOCK_BIT 2
-#define PS2_DATA_PORT PORTD
-#define PS2_DATA_PIN PIND
-#define PS2_DATA_DDR DDRD
-#define PS2_DATA_BIT 5
+#define PS2_CLOCK_PIN D2
+#define PS2_DATA_PIN D5
#define PS2_INT_INIT() do { \
EICRA |= ((1<` も消します)
- - `timer_read()` と `timer_read32()` など。 -- タイミング API は [timer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/timer.h) を参照してください
+ - `timer_read()` と `timer_read32()` など。 -- タイミング API は [timer.h](https://github.com/qmk/qmk_firmware/blob/master/platforms/timer.h) を参照してください
- 新しい抽象化が有用だと思う場合は、次のことをお勧めします:
- 機能が完成するまで自分のキーボードでプロトタイプを作成する
- Discord の QMK コラボレータと話し合う
diff --git a/docs/ja/understanding_qmk.md b/docs/ja/understanding_qmk.md
index 109876961b0..1654f8e0029 100644
--- a/docs/ja/understanding_qmk.md
+++ b/docs/ja/understanding_qmk.md
@@ -184,10 +184,6 @@ FIXME: This needs to be written
FIXME: This needs to be written
-#### Visualizer
-
-FIXME: This needs to be written
-
#### Keyboard state LEDs (Caps Lock, Num Lock, Scroll Lock)
FIXME: This needs to be written
diff --git a/docs/keycodes.md b/docs/keycodes.md
index 9f61447dc5e..ba06e1b8b68 100644
--- a/docs/keycodes.md
+++ b/docs/keycodes.md
@@ -8,205 +8,205 @@ This is a reference only. Each group of keys links to the page documenting their
See also: [Basic Keycodes](keycodes_basic.md)
-|Key |Aliases |Description |Windows |macOS |Linux1|
-|-----------------------|------------------------------|-----------------------------------------------|-------------|-------------|-----------------|
-|`KC_NO` |`XXXXXXX` |Ignore this key (NOOP) |*N/A* |*N/A* |*N/A* |
-|`KC_TRANSPARENT` |`KC_TRNS`, `_______` |Use the next lowest non-transparent key |*N/A* |*N/A* |*N/A* |
-|`KC_A` | |`a` and `A` |✔ |✔ |✔ |
-|`KC_B` | |`b` and `B` |✔ |✔ |✔ |
-|`KC_C` | |`c` and `C` |✔ |✔ |✔ |
-|`KC_D` | |`d` and `D` |✔ |✔ |✔ |
-|`KC_E` | |`e` and `E` |✔ |✔ |✔ |
-|`KC_F` | |`f` and `F` |✔ |✔ |✔ |
-|`KC_G` | |`g` and `G` |✔ |✔ |✔ |
-|`KC_H` | |`h` and `H` |✔ |✔ |✔ |
-|`KC_I` | |`i` and `I` |✔ |✔ |✔ |
-|`KC_J` | |`j` and `J` |✔ |✔ |✔ |
-|`KC_K` | |`k` and `K` |✔ |✔ |✔ |
-|`KC_L` | |`l` and `L` |✔ |✔ |✔ |
-|`KC_M` | |`m` and `M` |✔ |✔ |✔ |
-|`KC_N` | |`n` and `N` |✔ |✔ |✔ |
-|`KC_O` | |`o` and `O` |✔ |✔ |✔ |
-|`KC_P` | |`p` and `P` |✔ |✔ |✔ |
-|`KC_Q` | |`q` and `Q` |✔ |✔ |✔ |
-|`KC_R` | |`r` and `R` |✔ |✔ |✔ |
-|`KC_S` | |`s` and `S` |✔ |✔ |✔ |
-|`KC_T` | |`t` and `T` |✔ |✔ |✔ |
-|`KC_U` | |`u` and `U` |✔ |✔ |✔ |
-|`KC_V` | |`v` and `V` |✔ |✔ |✔ |
-|`KC_W` | |`w` and `W` |✔ |✔ |✔ |
-|`KC_X` | |`x` and `X` |✔ |✔ |✔ |
-|`KC_Y` | |`y` and `Y` |✔ |✔ |✔ |
-|`KC_Z` | |`z` and `Z` |✔ |✔ |✔ |
-|`KC_1` | |`1` and `!` |✔ |✔ |✔ |
-|`KC_2` | |`2` and `@` |✔ |✔ |✔ |
-|`KC_3` | |`3` and `#` |✔ |✔ |✔ |
-|`KC_4` | |`4` and `$` |✔ |✔ |✔ |
-|`KC_5` | |`5` and `%` |✔ |✔ |✔ |
-|`KC_6` | |`6` and `^` |✔ |✔ |✔ |
-|`KC_7` | |`7` and `&` |✔ |✔ |✔ |
-|`KC_8` | |`8` and `*` |✔ |✔ |✔ |
-|`KC_9` | |`9` and `(` |✔ |✔ |✔ |
-|`KC_0` | |`0` and `)` |✔ |✔ |✔ |
-|`KC_ENTER` |`KC_ENT` |Return (Enter) |✔ |✔ |✔ |
-|`KC_ESCAPE` |`KC_ESC` |Escape |✔ |✔ |✔ |
-|`KC_BSPACE` |`KC_BSPC` |Delete (Backspace) |✔ |✔ |✔ |
-|`KC_TAB` | |Tab |✔ |✔ |✔ |
-|`KC_SPACE` |`KC_SPC` |Spacebar |✔ |✔ |✔ |
-|`KC_MINUS` |`KC_MINS` |`-` and `_` |✔ |✔ |✔ |
-|`KC_EQUAL` |`KC_EQL` |`=` and `+` |✔ |✔ |✔ |
-|`KC_LBRACKET` |`KC_LBRC` |`[` and `{` |✔ |✔ |✔ |
-|`KC_RBRACKET` |`KC_RBRC` |`]` and `}` |✔ |✔ |✔ |
-|`KC_BSLASH` |`KC_BSLS` |`\` and `\|` |✔ |✔ |✔ |
-|`KC_NONUS_HASH` |`KC_NUHS` |Non-US `#` and `~` |✔ |✔ |✔ |
-|`KC_SCOLON` |`KC_SCLN` |`;` and `:` |✔ |✔ |✔ |
-|`KC_QUOTE` |`KC_QUOT` |`'` and `"` |✔ |✔ |✔ |
-|`KC_GRAVE` |`KC_GRV`, `KC_ZKHK` |`
and `~`, JIS Zenkaku/Hankaku|✔ |✔ |✔ |
-|`KC_COMMA` |`KC_COMM` |`,` and `<` |✔ |✔ |✔ |
-|`KC_DOT` | |`.` and `>` |✔ |✔ |✔ |
-|`KC_SLASH` |`KC_SLSH` |`/` and `?` |✔ |✔ |✔ |
-|`KC_CAPSLOCK` |`KC_CLCK`, `KC_CAPS` |Caps Lock |✔ |✔ |✔ |
-|`KC_F1` | |F1 |✔ |✔ |✔ |
-|`KC_F2` | |F2 |✔ |✔ |✔ |
-|`KC_F3` | |F3 |✔ |✔ |✔ |
-|`KC_F4` | |F4 |✔ |✔ |✔ |
-|`KC_F5` | |F5 |✔ |✔ |✔ |
-|`KC_F6` | |F6 |✔ |✔ |✔ |
-|`KC_F7` | |F7 |✔ |✔ |✔ |
-|`KC_F8` | |F8 |✔ |✔ |✔ |
-|`KC_F9` | |F9 |✔ |✔ |✔ |
-|`KC_F10` | |F10 |✔ |✔ |✔ |
-|`KC_F11` | |F11 |✔ |✔ |✔ |
-|`KC_F12` | |F12 |✔ |✔ |✔ |
-|`KC_PSCREEN` |`KC_PSCR` |Print Screen |✔ |✔2|✔ |
-|`KC_SCROLLLOCK` |`KC_SLCK`, `KC_BRMD` |Scroll Lock, Brightness Down (macOS) |✔ |✔2|✔ |
-|`KC_PAUSE` |`KC_PAUS`, `KC_BRK`, `KC_BRMU`|Pause, Brightness Up (macOS) |✔ |✔2|✔ |
-|`KC_INSERT` |`KC_INS` |Insert |✔ | |✔ |
-|`KC_HOME` | |Home |✔ |✔ |✔ |
-|`KC_PGUP` | |Page Up |✔ |✔ |✔ |
-|`KC_DELETE` |`KC_DEL` |Forward Delete |✔ |✔ |✔ |
-|`KC_END` | |End |✔ |✔ |✔ |
-|`KC_PGDOWN` |`KC_PGDN` |Page Down |✔ |✔ |✔ |
-|`KC_RIGHT` |`KC_RGHT` |Right Arrow |✔ |✔ |✔ |
-|`KC_LEFT` | |Left Arrow |✔ |✔ |✔ |
-|`KC_DOWN` | |Down Arrow |✔ |✔ |✔ |
-|`KC_UP` | |Up Arrow |✔ |✔ |✔ |
-|`KC_NUMLOCK` |`KC_NLCK` |Keypad Num Lock and Clear |✔ |✔ |✔ |
-|`KC_KP_SLASH` |`KC_PSLS` |Keypad `/` |✔ |✔ |✔ |
-|`KC_KP_ASTERISK` |`KC_PAST` |Keypad `*` |✔ |✔ |✔ |
-|`KC_KP_MINUS` |`KC_PMNS` |Keypad `-` |✔ |✔ |✔ |
-|`KC_KP_PLUS` |`KC_PPLS` |Keypad `+` |✔ |✔ |✔ |
-|`KC_KP_ENTER` |`KC_PENT` |Keypad Enter |✔ |✔ |✔ |
-|`KC_KP_1` |`KC_P1` |Keypad `1` and End |✔ |✔ |✔ |
-|`KC_KP_2` |`KC_P2` |Keypad `2` and Down Arrow |✔ |✔ |✔ |
-|`KC_KP_3` |`KC_P3` |Keypad `3` and Page Down |✔ |✔ |✔ |
-|`KC_KP_4` |`KC_P4` |Keypad `4` and Left Arrow |✔ |✔ |✔ |
-|`KC_KP_5` |`KC_P5` |Keypad `5` |✔ |✔ |✔ |
-|`KC_KP_6` |`KC_P6` |Keypad `6` and Right Arrow |✔ |✔ |✔ |
-|`KC_KP_7` |`KC_P7` |Keypad `7` and Home |✔ |✔ |✔ |
-|`KC_KP_8` |`KC_P8` |Keypad `8` and Up Arrow |✔ |✔ |✔ |
-|`KC_KP_9` |`KC_P9` |Keypad `9` and Page Up |✔ |✔ |✔ |
-|`KC_KP_0` |`KC_P0` |Keypad `0` and Insert |✔ |✔ |✔ |
-|`KC_KP_DOT` |`KC_PDOT` |Keypad `.` and Delete |✔ |✔ |✔ |
-|`KC_NONUS_BSLASH` |`KC_NUBS` |Non-US `\` and `\|` |✔ |✔ |✔ |
-|`KC_APPLICATION` |`KC_APP` |Application (Windows Context Menu Key) |✔ | |✔ |
-|`KC_POWER` | |System Power | |✔3|✔ |
-|`KC_KP_EQUAL` |`KC_PEQL` |Keypad `=` |✔ |✔ |✔ |
-|`KC_F13` | |F13 |✔ |✔ |✔ |
-|`KC_F14` | |F14 |✔ |✔ |✔ |
-|`KC_F15` | |F15 |✔ |✔ |✔ |
-|`KC_F16` | |F16 |✔ |✔ |✔ |
-|`KC_F17` | |F17 |✔ |✔ |✔ |
-|`KC_F18` | |F18 |✔ |✔ |✔ |
-|`KC_F19` | |F19 |✔ |✔ |✔ |
-|`KC_F20` | |F20 |✔ | |✔ |
-|`KC_F21` | |F21 |✔ | |✔ |
-|`KC_F22` | |F22 |✔ | |✔ |
-|`KC_F23` | |F23 |✔ | |✔ |
-|`KC_F24` | |F24 |✔ | |✔ |
-|`KC_EXECUTE` |`KC_EXEC` |Execute | | |✔ |
-|`KC_HELP` | |Help | | |✔ |
-|`KC_MENU` | |Menu | | |✔ |
-|`KC_SELECT` |`KC_SLCT` |Select | | |✔ |
-|`KC_STOP` | |Stop | | |✔ |
-|`KC_AGAIN` |`KC_AGIN` |Again | | |✔ |
-|`KC_UNDO` | |Undo | | |✔ |
-|`KC_CUT` | |Cut | | |✔ |
-|`KC_COPY` | |Copy | | |✔ |
-|`KC_PASTE` |`KC_PSTE` |Paste | | |✔ |
-|`KC_FIND` | |Find | | |✔ |
-|`KC__MUTE` | |Mute | |✔ |✔ |
-|`KC__VOLUP` | |Volume Up | |✔ |✔ |
-|`KC__VOLDOWN` | |Volume Down | |✔ |✔ |
-|`KC_LOCKING_CAPS` |`KC_LCAP` |Locking Caps Lock |✔ |✔ | |
-|`KC_LOCKING_NUM` |`KC_LNUM` |Locking Num Lock |✔ |✔ | |
-|`KC_LOCKING_SCROLL` |`KC_LSCR` |Locking Scroll Lock |✔ |✔ | |
-|`KC_KP_COMMA` |`KC_PCMM` |Keypad `,` | | |✔ |
-|`KC_KP_EQUAL_AS400` | |Keypad `=` on AS/400 keyboards | | | |
-|`KC_INT1` |`KC_RO` |JIS `\` and `_` |✔ | |✔ |
-|`KC_INT2` |`KC_KANA` |JIS Katakana/Hiragana |✔ | |✔ |
-|`KC_INT3` |`KC_JYEN` |JIS `¥` and `\|` |✔ | |✔ |
-|`KC_INT4` |`KC_HENK` |JIS Henkan |✔ | |✔ |
-|`KC_INT5` |`KC_MHEN` |JIS Muhenkan |✔ | |✔ |
-|`KC_INT6` | |JIS Numpad `,` | | |✔ |
-|`KC_INT7` | |International 7 | | | |
-|`KC_INT8` | |International 8 | | | |
-|`KC_INT9` | |International 9 | | | |
-|`KC_LANG1` |`KC_HAEN` |Hangul/English | | |✔ |
-|`KC_LANG2` |`KC_HANJ` |Hanja | | |✔ |
-|`KC_LANG3` | |JIS Katakana | | |✔ |
-|`KC_LANG4` | |JIS Hiragana | | |✔ |
-|`KC_LANG5` | |JIS Zenkaku/Hankaku | | |✔ |
-|`KC_LANG6` | |Language 6 | | | |
-|`KC_LANG7` | |Language 7 | | | |
-|`KC_LANG8` | |Language 8 | | | |
-|`KC_LANG9` | |Language 9 | | | |
-|`KC_ALT_ERASE` |`KC_ERAS` |Alternate Erase | | | |
-|`KC_SYSREQ` | |SysReq/Attention | | | |
-|`KC_CANCEL` | |Cancel | | | |
-|`KC_CLEAR` |`KC_CLR` |Clear | | |✔ |
-|`KC_PRIOR` | |Prior | | | |
-|`KC_RETURN` | |Return | | | |
-|`KC_SEPARATOR` | |Separator | | | |
-|`KC_OUT` | |Out | | | |
-|`KC_OPER` | |Oper | | | |
-|`KC_CLEAR_AGAIN` | |Clear/Again | | | |
-|`KC_CRSEL` | |CrSel/Props | | | |
-|`KC_EXSEL` | |ExSel | | | |
-|`KC_LCTRL` |`KC_LCTL` |Left Control |✔ |✔ |✔ |
-|`KC_LSHIFT` |`KC_LSFT` |Left Shift |✔ |✔ |✔ |
-|`KC_LALT` |`KC_LOPT` |Left Alt (Option) |✔ |✔ |✔ |
-|`KC_LGUI` |`KC_LCMD`, `KC_LWIN` |Left GUI (Windows/Command/Meta key) |✔ |✔ |✔ |
-|`KC_RCTRL` |`KC_RCTL` |Right Control |✔ |✔ |✔ |
-|`KC_RSHIFT` |`KC_RSFT` |Right Shift |✔ |✔ |✔ |
-|`KC_RALT` |`KC_ROPT`, `KC_ALGR` |Right Alt (Option/AltGr) |✔ |✔ |✔ |
-|`KC_RGUI` |`KC_RCMD`, `KC_RWIN` |Right GUI (Windows/Command/Meta key) |✔ |✔ |✔ |
-|`KC_SYSTEM_POWER` |`KC_PWR` |System Power Down |✔ |✔3|✔ |
-|`KC_SYSTEM_SLEEP` |`KC_SLEP` |System Sleep |✔ |✔3|✔ |
-|`KC_SYSTEM_WAKE` |`KC_WAKE` |System Wake | |✔3|✔ |
-|`KC_AUDIO_MUTE` |`KC_MUTE` |Mute |✔ |✔ |✔ |
-|`KC_AUDIO_VOL_UP` |`KC_VOLU` |Volume Up |✔ |✔4|✔ |
-|`KC_AUDIO_VOL_DOWN` |`KC_VOLD` |Volume Down |✔ |✔4|✔ |
-|`KC_MEDIA_NEXT_TRACK` |`KC_MNXT` |Next Track |✔ |✔5|✔ |
-|`KC_MEDIA_PREV_TRACK` |`KC_MPRV` |Previous Track |✔ |✔5|✔ |
-|`KC_MEDIA_STOP` |`KC_MSTP` |Stop Track |✔ | |✔ |
-|`KC_MEDIA_PLAY_PAUSE` |`KC_MPLY` |Play/Pause Track |✔ |✔ |✔ |
-|`KC_MEDIA_SELECT` |`KC_MSEL` |Launch Media Player |✔ | |✔ |
-|`KC_MEDIA_EJECT` |`KC_EJCT` |Eject | |✔ |✔ |
-|`KC_MAIL` | |Launch Mail |✔ | |✔ |
-|`KC_CALCULATOR` |`KC_CALC` |Launch Calculator |✔ | |✔ |
-|`KC_MY_COMPUTER` |`KC_MYCM` |Launch My Computer |✔ | |✔ |
-|`KC_WWW_SEARCH` |`KC_WSCH` |Browser Search |✔ | |✔ |
-|`KC_WWW_HOME` |`KC_WHOM` |Browser Home |✔ | |✔ |
-|`KC_WWW_BACK` |`KC_WBAK` |Browser Back |✔ | |✔ |
-|`KC_WWW_FORWARD` |`KC_WFWD` |Browser Forward |✔ | |✔ |
-|`KC_WWW_STOP` |`KC_WSTP` |Browser Stop |✔ | |✔ |
-|`KC_WWW_REFRESH` |`KC_WREF` |Browser Refresh |✔ | |✔ |
-|`KC_WWW_FAVORITES` |`KC_WFAV` |Browser Favorites |✔ | |✔ |
-|`KC_MEDIA_FAST_FORWARD`|`KC_MFFD` |Next Track |✔ |✔5|✔ |
-|`KC_MEDIA_REWIND` |`KC_MRWD` |Previous Track |✔6|✔5|✔ |
-|`KC_BRIGHTNESS_UP` |`KC_BRIU` |Brightness Up |✔ |✔ |✔ |
-|`KC_BRIGHTNESS_DOWN` |`KC_BRID` |Brightness Down |✔ |✔ |✔ |
+|Key |Aliases |Description |Windows |macOS |Linux1|
+|------------------------|-------------------------------|---------------------------------------|-------------|-------------|-----------------|
+|`KC_NO` |`XXXXXXX` |Ignore this key (NOOP) |*N/A* |*N/A* |*N/A* |
+|`KC_TRANSPARENT` |`KC_TRNS`, `_______` |Use the next lowest non-transparent key|*N/A* |*N/A* |*N/A* |
+|`KC_A` | |`a` and `A` |✔ |✔ |✔ |
+|`KC_B` | |`b` and `B` |✔ |✔ |✔ |
+|`KC_C` | |`c` and `C` |✔ |✔ |✔ |
+|`KC_D` | |`d` and `D` |✔ |✔ |✔ |
+|`KC_E` | |`e` and `E` |✔ |✔ |✔ |
+|`KC_F` | |`f` and `F` |✔ |✔ |✔ |
+|`KC_G` | |`g` and `G` |✔ |✔ |✔ |
+|`KC_H` | |`h` and `H` |✔ |✔ |✔ |
+|`KC_I` | |`i` and `I` |✔ |✔ |✔ |
+|`KC_J` | |`j` and `J` |✔ |✔ |✔ |
+|`KC_K` | |`k` and `K` |✔ |✔ |✔ |
+|`KC_L` | |`l` and `L` |✔ |✔ |✔ |
+|`KC_M` | |`m` and `M` |✔ |✔ |✔ |
+|`KC_N` | |`n` and `N` |✔ |✔ |✔ |
+|`KC_O` | |`o` and `O` |✔ |✔ |✔ |
+|`KC_P` | |`p` and `P` |✔ |✔ |✔ |
+|`KC_Q` | |`q` and `Q` |✔ |✔ |✔ |
+|`KC_R` | |`r` and `R` |✔ |✔ |✔ |
+|`KC_S` | |`s` and `S` |✔ |✔ |✔ |
+|`KC_T` | |`t` and `T` |✔ |✔ |✔ |
+|`KC_U` | |`u` and `U` |✔ |✔ |✔ |
+|`KC_V` | |`v` and `V` |✔ |✔ |✔ |
+|`KC_W` | |`w` and `W` |✔ |✔ |✔ |
+|`KC_X` | |`x` and `X` |✔ |✔ |✔ |
+|`KC_Y` | |`y` and `Y` |✔ |✔ |✔ |
+|`KC_Z` | |`z` and `Z` |✔ |✔ |✔ |
+|`KC_1` | |`1` and `!` |✔ |✔ |✔ |
+|`KC_2` | |`2` and `@` |✔ |✔ |✔ |
+|`KC_3` | |`3` and `#` |✔ |✔ |✔ |
+|`KC_4` | |`4` and `$` |✔ |✔ |✔ |
+|`KC_5` | |`5` and `%` |✔ |✔ |✔ |
+|`KC_6` | |`6` and `^` |✔ |✔ |✔ |
+|`KC_7` | |`7` and `&` |✔ |✔ |✔ |
+|`KC_8` | |`8` and `*` |✔ |✔ |✔ |
+|`KC_9` | |`9` and `(` |✔ |✔ |✔ |
+|`KC_0` | |`0` and `)` |✔ |✔ |✔ |
+|`KC_ENTER` |`KC_ENT` |Return (Enter) |✔ |✔ |✔ |
+|`KC_ESCAPE` |`KC_ESC` |Escape |✔ |✔ |✔ |
+|`KC_BACKSPACE` |`KC_BSPC` |Delete (Backspace) |✔ |✔ |✔ |
+|`KC_TAB` | |Tab |✔ |✔ |✔ |
+|`KC_SPACE` |`KC_SPC` |Spacebar |✔ |✔ |✔ |
+|`KC_MINUS` |`KC_MINS` |`-` and `_` |✔ |✔ |✔ |
+|`KC_EQUAL` |`KC_EQL` |`=` and `+` |✔ |✔ |✔ |
+|`KC_LEFT_BRACKET` |`KC_LBRC` |`[` and `{` |✔ |✔ |✔ |
+|`KC_RIGHT_BRACKET` |`KC_RBRC` |`]` and `}` |✔ |✔ |✔ |
+|`KC_BACKSLASH` |`KC_BSLS` |`\` and `\|` |✔ |✔ |✔ |
+|`KC_NONUS_HASH` |`KC_NUHS` |Non-US `#` and `~` |✔ |✔ |✔ |
+|`KC_SEMICOLON` |`KC_SCLN` |`;` and `:` |✔ |✔ |✔ |
+|`KC_QUOTE` |`KC_QUOT` |`'` and `"` |✔ |✔ |✔ |
+|`KC_GRAVE` |`KC_GRV` |`
and `~` |✔ |✔ |✔ |
+|`KC_COMMA` |`KC_COMM` |`,` and `<` |✔ |✔ |✔ |
+|`KC_DOT` | |`.` and `>` |✔ |✔ |✔ |
+|`KC_SLASH` |`KC_SLSH` |`/` and `?` |✔ |✔ |✔ |
+|`KC_CAPS_LOCK` |`KC_CAPS` |Caps Lock |✔ |✔ |✔ |
+|`KC_F1` | |F1 |✔ |✔ |✔ |
+|`KC_F2` | |F2 |✔ |✔ |✔ |
+|`KC_F3` | |F3 |✔ |✔ |✔ |
+|`KC_F4` | |F4 |✔ |✔ |✔ |
+|`KC_F5` | |F5 |✔ |✔ |✔ |
+|`KC_F6` | |F6 |✔ |✔ |✔ |
+|`KC_F7` | |F7 |✔ |✔ |✔ |
+|`KC_F8` | |F8 |✔ |✔ |✔ |
+|`KC_F9` | |F9 |✔ |✔ |✔ |
+|`KC_F10` | |F10 |✔ |✔ |✔ |
+|`KC_F11` | |F11 |✔ |✔ |✔ |
+|`KC_F12` | |F12 |✔ |✔ |✔ |
+|`KC_PRINT_SCREEN` |`KC_PSCR` |Print Screen |✔ |✔2|✔ |
+|`KC_SCROLL_LOCK` |`KC_SCRL`, `KC_BRMD` |Scroll Lock, Brightness Down (macOS) |✔ |✔2|✔ |
+|`KC_PAUSE` |`KC_PAUS`, `KC_BRK`, `KC_BRMU` |Pause, Brightness Up (macOS) |✔ |✔2|✔ |
+|`KC_INSERT` |`KC_INS` |Insert |✔ | |✔ |
+|`KC_HOME` | |Home |✔ |✔ |✔ |
+|`KC_PAGE_UP` |`KC_PGUP` |Page Up |✔ |✔ |✔ |
+|`KC_DELETE` |`KC_DEL` |Forward Delete |✔ |✔ |✔ |
+|`KC_END` | |End |✔ |✔ |✔ |
+|`KC_PAGE_DOWN` |`KC_PGDN` |Page Down |✔ |✔ |✔ |
+|`KC_RIGHT` |`KC_RGHT` |Right Arrow |✔ |✔ |✔ |
+|`KC_LEFT` | |Left Arrow |✔ |✔ |✔ |
+|`KC_DOWN` | |Down Arrow |✔ |✔ |✔ |
+|`KC_UP` | |Up Arrow |✔ |✔ |✔ |
+|`KC_NUM_LOCK` |`KC_NUM` |Keypad Num Lock and Clear |✔ |✔ |✔ |
+|`KC_KP_SLASH` |`KC_PSLS` |Keypad `/` |✔ |✔ |✔ |
+|`KC_KP_ASTERISK` |`KC_PAST` |Keypad `*` |✔ |✔ |✔ |
+|`KC_KP_MINUS` |`KC_PMNS` |Keypad `-` |✔ |✔ |✔ |
+|`KC_KP_PLUS` |`KC_PPLS` |Keypad `+` |✔ |✔ |✔ |
+|`KC_KP_ENTER` |`KC_PENT` |Keypad Enter |✔ |✔ |✔ |
+|`KC_KP_1` |`KC_P1` |Keypad `1` and End |✔ |✔ |✔ |
+|`KC_KP_2` |`KC_P2` |Keypad `2` and Down Arrow |✔ |✔ |✔ |
+|`KC_KP_3` |`KC_P3` |Keypad `3` and Page Down |✔ |✔ |✔ |
+|`KC_KP_4` |`KC_P4` |Keypad `4` and Left Arrow |✔ |✔ |✔ |
+|`KC_KP_5` |`KC_P5` |Keypad `5` |✔ |✔ |✔ |
+|`KC_KP_6` |`KC_P6` |Keypad `6` and Right Arrow |✔ |✔ |✔ |
+|`KC_KP_7` |`KC_P7` |Keypad `7` and Home |✔ |✔ |✔ |
+|`KC_KP_8` |`KC_P8` |Keypad `8` and Up Arrow |✔ |✔ |✔ |
+|`KC_KP_9` |`KC_P9` |Keypad `9` and Page Up |✔ |✔ |✔ |
+|`KC_KP_0` |`KC_P0` |Keypad `0` and Insert |✔ |✔ |✔ |
+|`KC_KP_DOT` |`KC_PDOT` |Keypad `.` and Delete |✔ |✔ |✔ |
+|`KC_NONUS_BACKSLASH` |`KC_NUBS` |Non-US `\` and `\|` |✔ |✔ |✔ |
+|`KC_APPLICATION` |`KC_APP` |Application (Windows Context Menu Key) |✔ | |✔ |
+|`KC_KB_POWER` | |System Power | |✔3|✔ |
+|`KC_KP_EQUAL` |`KC_PEQL` |Keypad `=` |✔ |✔ |✔ |
+|`KC_F13` | |F13 |✔ |✔ |✔ |
+|`KC_F14` | |F14 |✔ |✔ |✔ |
+|`KC_F15` | |F15 |✔ |✔ |✔ |
+|`KC_F16` | |F16 |✔ |✔ |✔ |
+|`KC_F17` | |F17 |✔ |✔ |✔ |
+|`KC_F18` | |F18 |✔ |✔ |✔ |
+|`KC_F19` | |F19 |✔ |✔ |✔ |
+|`KC_F20` | |F20 |✔ | |✔ |
+|`KC_F21` | |F21 |✔ | |✔ |
+|`KC_F22` | |F22 |✔ | |✔ |
+|`KC_F23` | |F23 |✔ | |✔ |
+|`KC_F24` | |F24 |✔ | |✔ |
+|`KC_EXECUTE` |`KC_EXEC` |Execute | | |✔ |
+|`KC_HELP` | |Help | | |✔ |
+|`KC_MENU` | |Menu | | |✔ |
+|`KC_SELECT` |`KC_SLCT` |Select | | |✔ |
+|`KC_STOP` | |Stop | | |✔ |
+|`KC_AGAIN` |`KC_AGIN` |Again | | |✔ |
+|`KC_UNDO` | |Undo | | |✔ |
+|`KC_CUT` | |Cut | | |✔ |
+|`KC_COPY` | |Copy | | |✔ |
+|`KC_PASTE` |`KC_PSTE` |Paste | | |✔ |
+|`KC_FIND` | |Find | | |✔ |
+|`KC_KB_MUTE` | |Mute | |✔ |✔ |
+|`KC_KB_VOLUME_UP` | |Volume Up | |✔ |✔ |
+|`KC_KB_VOLUME_DOWN` | |Volume Down | |✔ |✔ |
+|`KC_LOCKING_CAPS_LOCK` |`KC_LCAP` |Locking Caps Lock |✔ |✔ | |
+|`KC_LOCKING_NUM_LOCK` |`KC_LNUM` |Locking Num Lock |✔ |✔ | |
+|`KC_LOCKING_SCROLL_LOCK`|`KC_LSCR` |Locking Scroll Lock |✔ |✔ | |
+|`KC_KP_COMMA` |`KC_PCMM` |Keypad `,` | | |✔ |
+|`KC_KP_EQUAL_AS400` | |Keypad `=` on AS/400 keyboards | | | |
+|`KC_INTERNATIONAL_1` |`KC_INT1` |International 1 |✔ | |✔ |
+|`KC_INTERNATIONAL_2` |`KC_INT2` |International 2 |✔ | |✔ |
+|`KC_INTERNATIONAL_3` |`KC_INT3` |International 3 |✔ | |✔ |
+|`KC_INTERNATIONAL_4` |`KC_INT4` |International 4 |✔ | |✔ |
+|`KC_INTERNATIONAL_5` |`KC_INT5` |International 5 |✔ | |✔ |
+|`KC_INTERNATIONAL_6` |`KC_INT6` |International 6 | | |✔ |
+|`KC_INTERNATIONAL_7` |`KC_INT7` |International 7 | | | |
+|`KC_INTERNATIONAL_8` |`KC_INT8` |International 8 | | | |
+|`KC_INTERNATIONAL_9` |`KC_INT9` |International 9 | | | |
+|`KC_LANGUAGE_1` |`KC_LNG1` |Language 1 | | |✔ |
+|`KC_LANGUAGE_2` |`KC_LNG2` |Language 2 | | |✔ |
+|`KC_LANGUAGE_3` |`KC_LNG3` |Language 3 | | |✔ |
+|`KC_LANGUAGE_4` |`KC_LNG4` |Language 4 | | |✔ |
+|`KC_LANGUAGE_5` |`KC_LNG5` |Language 5 | | |✔ |
+|`KC_LANGUAGE_6` |`KC_LNG6` |Language 6 | | | |
+|`KC_LANGUAGE_7` |`KC_LNG7` |Language 7 | | | |
+|`KC_LANGUAGE_8` |`KC_LNG8` |Language 8 | | | |
+|`KC_LANGUAGE_9` |`KC_LNG9` |Language 9 | | | |
+|`KC_ALTERNATE_ERASE` |`KC_ERAS` |Alternate Erase | | | |
+|`KC_SYSTEM_REQUEST` |`KC_SYRQ` |SysReq/Attention | | | |
+|`KC_CANCEL` |`KC_CNCL` |Cancel | | | |
+|`KC_CLEAR` |`KC_CLR` |Clear | | |✔ |
+|`KC_PRIOR` |`KC_PRIR` |Prior | | | |
+|`KC_RETURN` |`KC_RETN` |Return | | | |
+|`KC_SEPARATOR` |`KC_SEPR` |Separator | | | |
+|`KC_OUT` | |Out | | | |
+|`KC_OPER` | |Oper | | | |
+|`KC_CLEAR_AGAIN` |`KC_CLAG` |Clear/Again | | | |
+|`KC_CRSEL` |`KC_CRSL` |CrSel/Props | | | |
+|`KC_EXSEL` |`KC_EXSL` |ExSel | | | |
+|`KC_LEFT_CTRL` |`KC_LCTL` |Left Control |✔ |✔ |✔ |
+|`KC_LEFT_SHIFT` |`KC_LSFT` |Left Shift |✔ |✔ |✔ |
+|`KC_LEFT_ALT` |`KC_LALT`, `KC_LOPT` |Left Alt (Option) |✔ |✔ |✔ |
+|`KC_LEFT_GUI` |`KC_LGUI`, `KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Meta key) |✔ |✔ |✔ |
+|`KC_RIGHT_CTRL` |`KC_RCTL` |Right Control |✔ |✔ |✔ |
+|`KC_RIGHT_SHIFT` |`KC_RSFT` |Right Shift |✔ |✔ |✔ |
+|`KC_RIGHT_ALT` |`KC_RALT`, `KC_ROPT`, `KC_ALGR`|Right Alt (Option/AltGr) |✔ |✔ |✔ |
+|`KC_RIGHT_GUI` |`KC_RGUI`, `KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Meta key) |✔ |✔ |✔ |
+|`KC_SYSTEM_POWER` |`KC_PWR` |System Power Down |✔ |✔3|✔ |
+|`KC_SYSTEM_SLEEP` |`KC_SLEP` |System Sleep |✔ |✔3|✔ |
+|`KC_SYSTEM_WAKE` |`KC_WAKE` |System Wake | |✔3|✔ |
+|`KC_AUDIO_MUTE` |`KC_MUTE` |Mute |✔ |✔ |✔ |
+|`KC_AUDIO_VOL_UP` |`KC_VOLU` |Volume Up |✔ |✔4|✔ |
+|`KC_AUDIO_VOL_DOWN` |`KC_VOLD` |Volume Down |✔ |✔4|✔ |
+|`KC_MEDIA_NEXT_TRACK` |`KC_MNXT` |Next Track |✔ |✔5|✔ |
+|`KC_MEDIA_PREV_TRACK` |`KC_MPRV` |Previous Track |✔ |✔5|✔ |
+|`KC_MEDIA_STOP` |`KC_MSTP` |Stop Track |✔ | |✔ |
+|`KC_MEDIA_PLAY_PAUSE` |`KC_MPLY` |Play/Pause Track |✔ |✔ |✔ |
+|`KC_MEDIA_SELECT` |`KC_MSEL` |Launch Media Player |✔ | |✔ |
+|`KC_MEDIA_EJECT` |`KC_EJCT` |Eject | |✔ |✔ |
+|`KC_MAIL` | |Launch Mail |✔ | |✔ |
+|`KC_CALCULATOR` |`KC_CALC` |Launch Calculator |✔ | |✔ |
+|`KC_MY_COMPUTER` |`KC_MYCM` |Launch My Computer |✔ | |✔ |
+|`KC_WWW_SEARCH` |`KC_WSCH` |Browser Search |✔ | |✔ |
+|`KC_WWW_HOME` |`KC_WHOM` |Browser Home |✔ | |✔ |
+|`KC_WWW_BACK` |`KC_WBAK` |Browser Back |✔ | |✔ |
+|`KC_WWW_FORWARD` |`KC_WFWD` |Browser Forward |✔ | |✔ |
+|`KC_WWW_STOP` |`KC_WSTP` |Browser Stop |✔ | |✔ |
+|`KC_WWW_REFRESH` |`KC_WREF` |Browser Refresh |✔ | |✔ |
+|`KC_WWW_FAVORITES` |`KC_WFAV` |Browser Favorites |✔ | |✔ |
+|`KC_MEDIA_FAST_FORWARD` |`KC_MFFD` |Next Track |✔ |✔5|✔ |
+|`KC_MEDIA_REWIND` |`KC_MRWD` |Previous Track |✔6|✔5|✔ |
+|`KC_BRIGHTNESS_UP` |`KC_BRIU` |Brightness Up |✔ |✔ |✔ |
+|`KC_BRIGHTNESS_DOWN` |`KC_BRID` |Brightness Down |✔ |✔ |✔ |
1. The Linux kernel HID driver recognizes [nearly all keycodes](https://github.com/torvalds/linux/blob/master/drivers/hid/hid-input.c), but the default bindings depend on the DE/WM.
2. Treated as F13-F15.
@@ -586,6 +586,16 @@ See also: [Mod-Tap](mod_tap.md)
|`MEH_T(kc)` | |Left Control, Shift and Alt when held, `kc` when tapped |
|`HYPR_T(kc)` |`ALL_T(kc)` |Left Control, Shift, Alt and GUI when held, `kc` when tapped - more info [here](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)|
+## Tapping Term Keys :id=tapping-term-keys
+
+See also: [Dynamic Tapping Term](tap_hold#dynamic-tapping-term)
+
+| Key | Description |
+|-------------|------------------------------------------------------------------------------------------------------------------------|
+| `DT_PRNT` | "Dynamic Tapping Term Print": Types the current tapping term, in milliseconds |
+| `DT_UP` | "Dynamic Tapping Term Up": Increases the current tapping term by `DYNAMIC_TAPPING_TERM_INCREMENT`ms (5ms by default) |
+| `DT_DOWN` | "Dynamic Tapping Term Down": Decreases the current tapping term by `DYNAMIC_TAPPING_TERM_INCREMENT`ms (5ms by default) |
+
## RGB Lighting :id=rgb-lighting
See also: [RGB Lighting](feature_rgblight.md)
@@ -678,6 +688,46 @@ See also: [One Shot Keys](one_shot_keys.md)
|`OS_OFF` |Turns One Shot keys off |
|`OS_TOGG` |Toggles One Shot keys status |
+## Programmable Button Support :id=programmable-button
+
+See also: [Programmable Button](feature_programmable_button.md)
+
+|Key |Description |
+|------------------------|----------------------|
+|`PROGRAMMABLE_BUTTON_1` |Programmable button 1 |
+|`PROGRAMMABLE_BUTTON_2` |Programmable button 2 |
+|`PROGRAMMABLE_BUTTON_3` |Programmable button 3 |
+|`PROGRAMMABLE_BUTTON_4` |Programmable button 4 |
+|`PROGRAMMABLE_BUTTON_5` |Programmable button 5 |
+|`PROGRAMMABLE_BUTTON_6` |Programmable button 6 |
+|`PROGRAMMABLE_BUTTON_7` |Programmable button 7 |
+|`PROGRAMMABLE_BUTTON_8` |Programmable button 8 |
+|`PROGRAMMABLE_BUTTON_9` |Programmable button 9 |
+|`PROGRAMMABLE_BUTTON_10`|Programmable button 10|
+|`PROGRAMMABLE_BUTTON_11`|Programmable button 11|
+|`PROGRAMMABLE_BUTTON_12`|Programmable button 12|
+|`PROGRAMMABLE_BUTTON_13`|Programmable button 13|
+|`PROGRAMMABLE_BUTTON_14`|Programmable button 14|
+|`PROGRAMMABLE_BUTTON_15`|Programmable button 15|
+|`PROGRAMMABLE_BUTTON_16`|Programmable button 16|
+|`PROGRAMMABLE_BUTTON_17`|Programmable button 17|
+|`PROGRAMMABLE_BUTTON_18`|Programmable button 18|
+|`PROGRAMMABLE_BUTTON_19`|Programmable button 19|
+|`PROGRAMMABLE_BUTTON_20`|Programmable button 20|
+|`PROGRAMMABLE_BUTTON_21`|Programmable button 21|
+|`PROGRAMMABLE_BUTTON_22`|Programmable button 22|
+|`PROGRAMMABLE_BUTTON_23`|Programmable button 23|
+|`PROGRAMMABLE_BUTTON_24`|Programmable button 24|
+|`PROGRAMMABLE_BUTTON_25`|Programmable button 25|
+|`PROGRAMMABLE_BUTTON_26`|Programmable button 26|
+|`PROGRAMMABLE_BUTTON_27`|Programmable button 27|
+|`PROGRAMMABLE_BUTTON_28`|Programmable button 28|
+|`PROGRAMMABLE_BUTTON_29`|Programmable button 29|
+|`PROGRAMMABLE_BUTTON_30`|Programmable button 30|
+|`PROGRAMMABLE_BUTTON_31`|Programmable button 31|
+|`PROGRAMMABLE_BUTTON_32`|Programmable button 32|
+|`PB_1` to `PB_32` |Aliases for keymaps |
+
## Space Cadet :id=space-cadet
See also: [Space Cadet](feature_space_cadet.md)
diff --git a/docs/keycodes_basic.md b/docs/keycodes_basic.md
index 6a31204f334..6f6ef7a3fde 100644
--- a/docs/keycodes_basic.md
+++ b/docs/keycodes_basic.md
@@ -74,118 +74,118 @@ The basic set of keycodes are based on the [HID Keyboard/Keypad Usage Page (0x07
## Punctuation
-|Key |Aliases |Description |
-|-----------------|-------------------|-----------------------------------------------|
-|`KC_ENTER` |`KC_ENT` |Return (Enter) |
-|`KC_ESCAPE` |`KC_ESC` |Escape |
-|`KC_BSPACE` |`KC_BSPC` |Delete (Backspace) |
-|`KC_TAB` | |Tab |
-|`KC_SPACE` |`KC_SPC` |Spacebar |
-|`KC_MINUS` |`KC_MINS` |`-` and `_` |
-|`KC_EQUAL` |`KC_EQL` |`=` and `+` |
-|`KC_LBRACKET` |`KC_LBRC` |`[` and `{` |
-|`KC_RBRACKET` |`KC_RBRC` |`]` and `}` |
-|`KC_BSLASH` |`KC_BSLS` |`\` and `\|` |
-|`KC_NONUS_HASH` |`KC_NUHS` |Non-US `#` and `~` |
-|`KC_SCOLON` |`KC_SCLN` |`;` and `:` |
-|`KC_QUOTE` |`KC_QUOT` |`'` and `"` |
-|`KC_GRAVE` |`KC_GRV`, `KC_ZKHK`|`
and `~`, JIS Zenkaku/Hankaku|
-|`KC_COMMA` |`KC_COMM` |`,` and `<` |
-|`KC_DOT` | |`.` and `>` |
-|`KC_SLASH` |`KC_SLSH` |`/` and `?` |
-|`KC_NONUS_BSLASH`|`KC_NUBS` |Non-US `\` and `\|` |
+|Key |Aliases |Description |
+|--------------------|---------|--------------------------|
+|`KC_ENTER` |`KC_ENT` |Return (Enter) |
+|`KC_ESCAPE` |`KC_ESC` |Escape |
+|`KC_BACKSPACE` |`KC_BSPC`|Delete (Backspace) |
+|`KC_TAB` | |Tab |
+|`KC_SPACE` |`KC_SPC` |Spacebar |
+|`KC_MINUS` |`KC_MINS`|`-` and `_` |
+|`KC_EQUAL` |`KC_EQL` |`=` and `+` |
+|`KC_LEFT_BRACKET` |`KC_LBRC`|`[` and `{` |
+|`KC_RIGHT_BRACKET` |`KC_RBRC`|`]` and `}` |
+|`KC_BACKSLASH` |`KC_BSLS`|`\` and `\|` |
+|`KC_NONUS_HASH` |`KC_NUHS`|Non-US `#` and `~` |
+|`KC_SEMICOLON` |`KC_SCLN`|`;` and `:` |
+|`KC_QUOTE` |`KC_QUOT`|`'` and `"` |
+|`KC_GRAVE` |`KC_GRV` |`
and `~`|
+|`KC_COMMA` |`KC_COMM`|`,` and `<` |
+|`KC_DOT` | |`.` and `>` |
+|`KC_SLASH` |`KC_SLSH`|`/` and `?` |
+|`KC_NONUS_BACKSLASH`|`KC_NUBS`|Non-US `\` and `\|` |
## Lock Keys
-|Key |Aliases |Description |
-|-------------------|--------------------|------------------------------------|
-|`KC_CAPSLOCK` |`KC_CLCK`, `KC_CAPS`|Caps Lock |
-|`KC_SCROLLLOCK` |`KC_SLCK`, `KC_BRMD`|Scroll Lock, Brightness Down (macOS)|
-|`KC_NUMLOCK` |`KC_NLCK` |Keypad Num Lock and Clear |
-|`KC_LOCKING_CAPS` |`KC_LCAP` |Locking Caps Lock |
-|`KC_LOCKING_NUM` |`KC_LNUM` |Locking Num Lock |
-|`KC_LOCKING_SCROLL`|`KC_LSCR` |Locking Scroll Lock |
+|Key |Aliases |Description |
+|------------------------|--------------------|------------------------------------|
+|`KC_CAPS_LOCK` |`KC_CAPS` |Caps Lock |
+|`KC_SCROLL_LOCK` |`KC_SCRL`, `KC_BRMD`|Scroll Lock, Brightness Down (macOS)|
+|`KC_NUM_LOCK` |`KC_NUM` |Keypad Num Lock and Clear |
+|`KC_LOCKING_CAPS_LOCK` |`KC_LCAP` |Locking Caps Lock |
+|`KC_LOCKING_NUM_LOCK` |`KC_LNUM` |Locking Num Lock |
+|`KC_LOCKING_SCROLL_LOCK`|`KC_LSCR` |Locking Scroll Lock |
## Modifiers
-|Key |Aliases |Description |
-|-----------|--------------------|------------------------------------|
-|`KC_LCTRL` |`KC_LCTL` |Left Control |
-|`KC_LSHIFT`|`KC_LSFT` |Left Shift |
-|`KC_LALT` |`KC_LOPT` |Left Alt (Option) |
-|`KC_LGUI` |`KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Meta key) |
-|`KC_RCTRL` |`KC_RCTL` |Right Control |
-|`KC_RSHIFT`|`KC_RSFT` |Right Shift |
-|`KC_RALT` |`KC_ROPT`, `KC_ALGR`|Right Alt (Option/AltGr) |
-|`KC_RGUI` |`KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Meta key)|
+|Key |Aliases |Description |
+|----------------|-------------------------------|------------------------------------|
+|`KC_LEFT_CTRL` |`KC_LCTL` |Left Control |
+|`KC_LEFT_SHIFT` |`KC_LSFT` |Left Shift |
+|`KC_LEFT_ALT` |`KC_LALT`, `KC_LOPT` |Left Alt (Option) |
+|`KC_LEFT_GUI` |`KC_LGUI`, `KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Meta key) |
+|`KC_RIGHT_CTRL` |`KC_RCTL` |Right Control |
+|`KC_RIGHT_SHIFT`|`KC_RSFT` |Right Shift |
+|`KC_RIGHT_ALT` |`KC_RALT`, `KC_ROPT`, `KC_ALGR`|Right Alt (Option/AltGr) |
+|`KC_RIGHT_GUI` |`KC_RGUI`, `KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Meta key)|
## International
-|Key |Aliases |Description |
-|----------|---------|---------------------|
-|`KC_INT1` |`KC_RO` |JIS `\` and `_` |
-|`KC_INT2` |`KC_KANA`|JIS Katakana/Hiragana|
-|`KC_INT3` |`KC_JYEN`|JIS `¥` and `\|` |
-|`KC_INT4` |`KC_HENK`|JIS Henkan |
-|`KC_INT5` |`KC_MHEN`|JIS Muhenkan |
-|`KC_INT6` | |JIS Numpad `,` |
-|`KC_INT7` | |International 7 |
-|`KC_INT8` | |International 8 |
-|`KC_INT9` | |International 9 |
-|`KC_LANG1`|`KC_HAEN`|Hangul/English |
-|`KC_LANG2`|`KC_HANJ`|Hanja |
-|`KC_LANG3`| |JIS Katakana |
-|`KC_LANG4`| |JIS Hiragana |
-|`KC_LANG5`| |JIS Zenkaku/Hankaku |
-|`KC_LANG6`| |Language 6 |
-|`KC_LANG7`| |Language 7 |
-|`KC_LANG8`| |Language 8 |
-|`KC_LANG9`| |Language 9 |
+|Key |Aliases |Description |
+|--------------------|---------|---------------------|
+|`KC_INTERNATIONAL_1`|`KC_INT1`|JIS `\` and `_` |
+|`KC_INTERNATIONAL_2`|`KC_INT2`|JIS Katakana/Hiragana|
+|`KC_INTERNATIONAL_3`|`KC_INT3`|JIS `¥` and `\|` |
+|`KC_INTERNATIONAL_4`|`KC_INT4`|JIS Henkan |
+|`KC_INTERNATIONAL_5`|`KC_INT5`|JIS Muhenkan |
+|`KC_INTERNATIONAL_6`|`KC_INT6`|JIS Numpad `,` |
+|`KC_INTERNATIONAL_7`|`KC_INT7`|International 7 |
+|`KC_INTERNATIONAL_8`|`KC_INT8`|International 8 |
+|`KC_INTERNATIONAL_9`|`KC_INT9`|International 9 |
+|`KC_LANGUAGE_1` |`KC_LNG1`|Hangul/English |
+|`KC_LANGUAGE_2` |`KC_LNG2`|Hanja |
+|`KC_LANGUAGE_3` |`KC_LNG3`|JIS Katakana |
+|`KC_LANGUAGE_4` |`KC_LNG4`|JIS Hiragana |
+|`KC_LANGUAGE_5` |`KC_LNG5`|JIS Zenkaku/Hankaku |
+|`KC_LANGUAGE_6` |`KC_LNG6`|Language 6 |
+|`KC_LANGUAGE_7` |`KC_LNG7`|Language 7 |
+|`KC_LANGUAGE_8` |`KC_LNG8`|Language 8 |
+|`KC_LANGUAGE_9` |`KC_LNG9`|Language 9 |
## Commands
-|Key |Aliases |Description |
-|------------------|------------------------------|--------------------------------------|
-|`KC_PSCREEN` |`KC_PSCR` |Print Screen |
-|`KC_PAUSE` |`KC_PAUS`, `KC_BRK`, `KC_BRMU`|Pause, Brightness Up (macOS) |
-|`KC_INSERT` |`KC_INS` |Insert |
-|`KC_HOME` | |Home |
-|`KC_PGUP` | |Page Up |
-|`KC_DELETE` |`KC_DEL` |Forward Delete |
-|`KC_END` | |End |
-|`KC_PGDOWN` |`KC_PGDN` |Page Down |
-|`KC_RIGHT` |`KC_RGHT` |Right Arrow |
-|`KC_LEFT` | |Left Arrow |
-|`KC_DOWN` | |Down Arrow |
-|`KC_UP` | |Up Arrow |
-|`KC_APPLICATION` |`KC_APP` |Application (Windows Context Menu Key)|
-|`KC_POWER` | |System Power |
-|`KC_EXECUTE` |`KC_EXEC` |Execute |
-|`KC_HELP` | |Help |
-|`KC_MENU` | |Menu |
-|`KC_SELECT` |`KC_SLCT` |Select |
-|`KC_STOP` | |Stop |
-|`KC_AGAIN` |`KC_AGIN` |Again |
-|`KC_UNDO` | |Undo |
-|`KC_CUT` | |Cut |
-|`KC_COPY` | |Copy |
-|`KC_PASTE` |`KC_PSTE` |Paste |
-|`KC_FIND` | |Find |
-|`KC__MUTE` | |Mute |
-|`KC__VOLUP` | |Volume Up |
-|`KC__VOLDOWN` | |Volume Down |
-|`KC_ALT_ERASE` |`KC_ERAS` |Alternate Erase |
-|`KC_SYSREQ` | |SysReq/Attention |
-|`KC_CANCEL` | |Cancel |
-|`KC_CLEAR` |`KC_CLR` |Clear |
-|`KC_PRIOR` | |Prior |
-|`KC_RETURN` | |Return |
-|`KC_SEPARATOR` | |Separator |
-|`KC_OUT` | |Out |
-|`KC_OPER` | |Oper |
-|`KC_CLEAR_AGAIN` | |Clear/Again |
-|`KC_CRSEL` | |CrSel/Props |
-|`KC_EXSEL` | |ExSel |
+|Key |Aliases |Description |
+|--------------------|------------------------------|--------------------------------------|
+|`KC_PRINT_SCREEN` |`KC_PSCR` |Print Screen |
+|`KC_PAUSE` |`KC_PAUS`, `KC_BRK`, `KC_BRMU`|Pause, Brightness Up (macOS) |
+|`KC_INSERT` |`KC_INS` |Insert |
+|`KC_HOME` | |Home |
+|`KC_PAGE_UP` |`KC_PGUP` |Page Up |
+|`KC_DELETE` |`KC_DEL` |Forward Delete |
+|`KC_END` | |End |
+|`KC_PAGE_DOWN` |`KC_PGDN` |Page Down |
+|`KC_RIGHT` |`KC_RGHT` |Right Arrow |
+|`KC_LEFT` | |Left Arrow |
+|`KC_DOWN` | |Down Arrow |
+|`KC_UP` | |Up Arrow |
+|`KC_APPLICATION` |`KC_APP` |Application (Windows Context Menu Key)|
+|`KC_KB_POWER` | |System Power |
+|`KC_EXECUTE` |`KC_EXEC` |Execute |
+|`KC_HELP` | |Help |
+|`KC_MENU` | |Menu |
+|`KC_SELECT` |`KC_SLCT` |Select |
+|`KC_STOP` | |Stop |
+|`KC_AGAIN` |`KC_AGIN` |Again |
+|`KC_UNDO` | |Undo |
+|`KC_CUT` | |Cut |
+|`KC_COPY` | |Copy |
+|`KC_PASTE` |`KC_PSTE` |Paste |
+|`KC_FIND` | |Find |
+|`KC_KB_MUTE` | |Mute |
+|`KC_KB_VOLUME_UP` | |Volume Up |
+|`KC_KB_VOLUME_DOWN` | |Volume Down |
+|`KC_ALTERNATE_ERASE`|`KC_ERAS` |Alternate Erase |
+|`KC_SYSTEM_REQUEST` |`KC_SYRQ` |SysReq/Attention |
+|`KC_CANCEL` |`KC_CNCL` |Cancel |
+|`KC_CLEAR` |`KC_CLR` |Clear |
+|`KC_PRIOR` |`KC_PRIR` |Prior |
+|`KC_RETURN` |`KC_RETN` |Return |
+|`KC_SEPARATOR` |`KC_SEPR` |Separator |
+|`KC_OUT` | |Out |
+|`KC_OPER` | |Oper |
+|`KC_CLEAR_AGAIN` |`KC_CLAG` |Clear/Again |
+|`KC_CRSEL` |`KC_CRSL` |CrSel/Props |
+|`KC_EXSEL` |`KC_EXSL` |ExSel |
## Media Keys
diff --git a/docs/keymap.md b/docs/keymap.md
index ef476e87f5b..bec781e684e 100644
--- a/docs/keymap.md
+++ b/docs/keymap.md
@@ -105,7 +105,7 @@ At the top of the file you'll find this:
#include QMK_KEYBOARD_H
// Helpful defines
- #define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
+ #define GRAVE_MODS (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* You can use _______ in place for KC_TRNS (transparent) *
@@ -164,7 +164,7 @@ Our function layer is, from a code point of view, no different from the base lay
[_FL] = LAYOUT(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, \
- _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, \
+ _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SCRL, KC_PAUS, _______, _______, _______, _______, \
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \
_______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
diff --git a/docs/newbs_git_resynchronize_a_branch.md b/docs/newbs_git_resynchronize_a_branch.md
index 3e7acdba7ad..1d0e4dda163 100644
--- a/docs/newbs_git_resynchronize_a_branch.md
+++ b/docs/newbs_git_resynchronize_a_branch.md
@@ -8,7 +8,7 @@ Suppose you have committed to your `master` branch, and now need to update your
No one wants to lose work if it can be helped. If you want to save the changes you've already made to your `master` branch, the simplest way to do so is to simply create a duplicate of your "dirty" `master` branch:
-```sh
+```
git branch old_master master
```
@@ -18,7 +18,7 @@ Now you have a branch named `old_master` that is a duplicate of your `master` br
Now it's time to resynchronize your `master` branch. For this step, you'll want to have QMK's repository configured as a remote in Git. To check your configured remotes, run `git remote -v`, which should return something similar to:
-```sh
+```
QMKuser ~/qmk_firmware (master)
$ git remote -v
origin https://github.com//qmk_firmware.git (fetch)
@@ -29,7 +29,7 @@ upstream https://github.com/qmk/qmk_firmware.git (push)
If you only see one fork referenced:
-```sh
+```
QMKuser ~/qmk_firmware (master)
$ git remote -v
origin https://github.com/qmk/qmk_firmware.git (fetch)
@@ -38,31 +38,31 @@ origin https://github.com/qmk/qmk_firmware.git (push)
add a new remote with:
-```sh
+```
git remote add upstream https://github.com/qmk/qmk_firmware.git
```
Then, redirect the `origin` remote to your own fork with:
-```sh
+```
git remote set-url origin https://github.com//qmk_firmware.git
```
Now that you have both remotes configured, you need to update the references for the upstream repository, which is QMK's, by running:
-```sh
+```
git fetch upstream
```
At this point, resynchronize your branch to QMK's by running:
-```sh
+```
git reset --hard upstream/master
```
These steps will update the repository on your computer, but your GitHub fork will still be out of sync. To resynchronize your fork on GitHub, you need to push to your fork, instructing Git to override any remote changes that are not reflected in your local repository. To do this, run:
-```sh
+```
git push --force-with-lease
```
diff --git a/docs/pr_checklist.md b/docs/pr_checklist.md
index 94c62c65354..25f3d7662ed 100644
--- a/docs/pr_checklist.md
+++ b/docs/pr_checklist.md
@@ -24,7 +24,7 @@ If there are any inconsistencies with these recommendations, you're best off [cr
- no "old-school" or other low-level GPIO/I2C/SPI functions may be used -- must use QMK abstractions unless justifiable (and laziness is not valid justification)
- timing abstractions should be followed too:
- `wait_ms()` instead of `_delay_ms()` (remove `#include ` too)
- - `timer_read()` and `timer_read32()` etc. -- see [timer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/timer.h) for the timing APIs
+ - `timer_read()` and `timer_read32()` etc. -- see [timer.h](https://github.com/qmk/qmk_firmware/blob/master/platforms/timer.h) for the timing APIs
- if you think a new abstraction is useful, you're encouraged to:
- prototype it in your own keyboard until it's feature-complete
- discuss it with QMK Collaborators on Discord
@@ -118,6 +118,10 @@ Also, specific to ChibiOS:
## Core PRs
- must now target `develop` branch, which will subsequently be merged back to `master` on the breaking changes timeline
+- any support for new hardware now requires a corresponding test board under `keyboards/handwired/onekey`
+ - for new MCUs, a new "child" keyboard should be added that targets your newly-added MCU, so that builds can be verified
+ - for new hardware support such as display panels, core-side matrix implementations, or other peripherals, an associated keymap should be provided
+ - if an existing keymap exists that can leverage this functionality this may not be required (e.g. a new RGB driver chip, supported by the `rgb` keymap) -- consult with the QMK Collaborators on Discord to determine if there is sufficient overlap already
- other requirements are at the discretion of QMK collaborators
- core is a lot more subjective given the breadth of posted changes
diff --git a/docs/reference_configurator_support.md b/docs/reference_configurator_support.md
index ba3d49e2b25..db6cd80a20a 100644
--- a/docs/reference_configurator_support.md
+++ b/docs/reference_configurator_support.md
@@ -168,7 +168,7 @@ k33 | {"label":"Enter", "x":3, "y":3, "h":2}
k40 | {"label":"0", "x":0, "y":4, "w":2}
k42 | {"label":".", "x":2, "y":4}
-When a user selects the top-left key in the Configurator, and assigns Num Lock to it, the Configurator builds a keymap file with `KC_NLCK` as the first key, and so on as the keymap is built. The `label` keys are not used; they are only for the user's reference in identifying specific keys when debugging the `info.json` file.
+When a user selects the top-left key in the Configurator, and assigns Num Lock to it, the Configurator builds a keymap file with `KC_NUM` as the first key, and so on as the keymap is built. The `label` keys are not used; they are only for the user's reference in identifying specific keys when debugging the `info.json` file.
## Issues and Hazards
diff --git a/docs/ru-ru/getting_started_github.md b/docs/ru-ru/getting_started_github.md
index 120f3c24ecd..7a70926f50d 100644
--- a/docs/ru-ru/getting_started_github.md
+++ b/docs/ru-ru/getting_started_github.md
@@ -31,7 +31,6 @@ Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
-Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
```
Теперь у вас есть форк QMK на вашем локальном компьютере, и вы можете добавить свою раскладку, скомпилировать ее и прошить ей свою клавиатуру. Как только вы будете довольны своими изменениями, есть возможность добавить, зафиксировать их и сделать коммит в свой форк следующим образом:
diff --git a/docs/squeezing_avr.md b/docs/squeezing_avr.md
new file mode 100644
index 00000000000..f48643d1d9c
--- /dev/null
+++ b/docs/squeezing_avr.md
@@ -0,0 +1,180 @@
+# Squeezing the most out of AVR
+
+AVR is severely resource-constrained, and as QMK continues to grow, it is approaching a point where support for AVR may need to be moved to legacy status as newer development is unable to fit into those constraints.
+
+However, if you need to reduce the compiled size of your firmware, there are a number of options to do so.
+
+## `rules.mk` Settings
+First and foremost is enabling link time optimization. To do so, add this to your rules.mk:
+```make
+LTO_ENABLE = yes
+```
+This will cause the final step to take longer, but should get you a smaller compiled size. This also disables Action Functions, and Action Macros, both of which are deprecated.
+This will get you the most savings, in most situations.
+
+From there, disabling extraneous systems will help -- e.g.:
+```make
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+MOUSEKEY_ENABLE = no
+EXTRAKEY_ENABLE = no
+```
+This disables some of the functionality that you may not need. But note that extrakeys disables stuff like the media keys and system volume control.
+
+If that isn't enough to get your firmware down to size, then there are some additional features that you can disable:
+```make
+SPACE_CADET_ENABLE = no
+GRAVE_ESC_ENABLE = no
+MAGIC_ENABLE = no
+```
+These features are enabled by default, but may not be needed. Double check to make sure, though.
+Largest in size is "magic" -- the QMK magic keycodes -- which control things like NKRO toggling, GUI and ALT/CTRL swapping, etc. Disabling it will disable those functions.
+
+## `config.h` Settings
+
+If you've done all of that, and you don't want to disable features like RGB, Audio, OLEDs, etc, there are some additional options that you can add to your config.h that can help.
+
+Starting with Lock Key support. If you have an Cherry MX Lock switch (lucky you!), you don't want to do this. But chances are, you don't. In that case, add this to your `config.h`:
+```c
+#undef LOCKING_SUPPORT_ENABLE
+#undef LOCKING_RESYNC_ENABLE
+```
+Oneshots. If you're not using these, you can disable the feature by adding this to your `config.h`:
+```c
+#define NO_ACTION_ONESHOT
+```
+The same with tapping keys (mod tap, layer tap, etc)
+```c
+#define NO_ACTION_TAPPING
+```
+## Audio Settings
+
+If you're using the Audio feature, by default that includes the music mode feature. This tranlates matrix positions into notes. It's neat for sure, but most likely, you're not using it. You can disable it by adding this to your `config.h`:
+```c
+#define NO_MUSIC_MODE
+```
+And by adding this to your `rules.mk`
+```make
+MUSIC_ENABLE = no
+```
+
+## Layers
+
+There are also some options for layers, that can reduce the firmware size. All of these settngs are for your `config.h`.
+
+You can limit the number of layers that the firmware uses -- if you're using less than 8 layers in total:
+```c
+#define LAYER_STATE_8BIT
+```
+or if you require up to 16 layers instead:
+```c
+#define LAYER_STATE_16BIT
+```
+Or if you're not using layers at all, you can outright remove the functionality altogether:
+```c
+#define NO_ACTION_LAYER
+```
+
+
+## OLED tweaks
+
+One place you can save a bunch of space here is by not using `sprintf` or `snprintf`. This function call takes up ~1.5kB of firmware space, and can be rewritten. For instance, WPM uses this a lot.
+
+You can convert this:
+```c
+ // OLD CODE
+ char wpm_str[4] = {0};
+ sprintf(wpm_str, "WPM: %03d", get_current_wpm());
+ oled_write(wpm_str, ' '), false);
+```
+into this:
+```c
+ // NEW CODE
+ oled_write_P(PSTR("WPM: "), false);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+```
+which outputs `WPM: 5`. Or this:
+```c
+ // NEW CODE
+ oled_write_P(PSTR("WPM: "), false);
+ oled_write(get_u8_str(get_current_wpm(), '0'), false);
+```
+which outputs `WPM: 005`.
+
+## RGB Settings
+
+If you're using RGB on your board, both RGB Light (Underglow) and RGB Matrix (per key RGB) now require defines to enable different animations -- some keyboards enable a lot of animations by default, so you can generally gain back some space by disabling specific animations if you don't use them.. For RGB Light you can disable these in your keymap's `config.h`:
+```c
+#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
+```
+
+For RGB Matrix, these need to be explicitly enabled as well. To disable any that were enabled by the keyboard, add one or more of these to your keymap's `config.h`:
+```c
+#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
+```
+
+# Final Thoughts
+
+If you've done all of this, and your firmware is still too large, then it's time. It's time to consider making the switch to ARM. Unfortunately, right now is the worst possible time for that, due to the silicon shortage, and supply chain issues. Getting an ARM chip is difficult, at best, and significantly overpriced, at worst.
+ -- Drashna
+
+That said, there are a number of Pro Micro replacements with ARM controllers:
+* [Proton C](https://qmk.fm/proton-c/) (out of stock)
+* [Bonsai C](https://github.com/customMK/Bonsai-C) (Open Source, DIY/PCBA)
+* [Raspberry Pi 2040](https://www.sparkfun.com/products/18288) (not currently supported, no ETA)
+
+There are other, non-Pro Micro compatible boards out there. The most popular being:
+* [WeAct Blackpill F411](https://www.aliexpress.com/item/1005001456186625.html) (~$6 USD)
diff --git a/docs/syllabus.md b/docs/syllabus.md
index ccb382c5d4a..f5cdea21820 100644
--- a/docs/syllabus.md
+++ b/docs/syllabus.md
@@ -31,6 +31,7 @@ These topics start to dig into some of the features that QMK supports. You don't
* [RGB Lighting](feature_rgblight.md)
* [RGB Matrix](feature_rgb_matrix.md)
* [Tap-Hold Configuration](tap_hold.md)
+ * [Squeezing Space from AVR](squeezing_avr.md)
* **Learn More About Keymaps**
* [Keymaps](keymap.md)
* [Custom Functions and Keycodes](custom_quantum_functions.md)
diff --git a/docs/tap_hold.md b/docs/tap_hold.md
index 71bff30baa5..d206c10cc58 100644
--- a/docs/tap_hold.md
+++ b/docs/tap_hold.md
@@ -6,7 +6,9 @@ These options let you modify the behavior of the Tap-Hold keys.
## Tapping Term
-The crux of all of the following features is the tapping term setting. This determines what is a tap and what is a hold. And the exact timing for this to feel natural can vary from keyboard to keyboard, from switch to switch, and from key to key.
+The crux of all of the following features is the tapping term setting. This determines what is a tap and what is a hold. The exact timing for this to feel natural can vary from keyboard to keyboard, from switch to switch, and from key to key.
+
+?> `DYNAMIC_TAPPING_TERM_ENABLE` enables three special keys that can help you quickly find a comfortable tapping term for you. See "Dynamic Tapping Term" for more details.
You can set the global time for this by adding the following setting to your `config.h`:
@@ -36,6 +38,82 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
}
```
+### Dynamic Tapping Term :id=dynamic-tapping-term
+
+`DYNAMIC_TAPPING_TERM_ENABLE` is a feature you can enable in `rules.mk` that lets you use three special keys in your keymap to configure the tapping term on the fly.
+
+| Key | Description |
+|-------------|------------------------------------------------------------------------------------------------------------------------|
+| `DT_PRNT` | "Dynamic Tapping Term Print": Types the current tapping term, in milliseconds |
+| `DT_UP` | "Dynamic Tapping Term Up": Increases the current tapping term by `DYNAMIC_TAPPING_TERM_INCREMENT`ms (5ms by default) |
+| `DT_DOWN` | "Dynamic Tapping Term Down": Decreases the current tapping term by `DYNAMIC_TAPPING_TERM_INCREMENT`ms (5ms by default) |
+
+Set the tapping term as usual with `#define TAPPING_TERM ` in `config.h` and add `DYNAMIC_TAPPING_TERM_ENABLE = yes` in `rules.mk`. Then, place the above three keys somewhere in your keymap and flash the new firmware onto your board.
+
+Now, you can try using your dual-role keys, such as layer-taps and mod-taps, and use `DT_DOWN` and `DT_UP` to adjust the tapping term immediately. If you find that you frequently trigger the modifier of your mod-tap(s) by accident for example, that's a sign that your tapping term may be too low so tap `DT_UP` a few times to increase the tapping term until that no longer happens. On the flip side, if you get superfluous characters when you actually intended to momentarily activate a layer, tap `DT_DOWN` to lower the tapping term. Do note that these keys affect the *global* tapping term, you cannot change the tapping term of a specific key on the fly.
+
+Once you're satisfied with the current tapping term value, open `config.h` and replace whatever value you first wrote for the tapping term by the output of the `DT_PRNT` key.
+
+It's important to update `TAPPING_TERM` with the new value because the adjustments made using `DT_UP` and `DT_DOWN` are not persistent.
+
+The value by which the tapping term increases or decreases when you tap `DT_UP` and `DT_DOWN` can be configured in `config.h` with `#define DYNAMIC_TAPPING_TERM_INCREMENT `. Note that the tapping term is *not* modified when holding down the tap term keys so if you need to, for example, decrease the current tapping term by 50ms, you cannot just press down and hold `DT_DOWN`; you will have to tap it 10 times in a row with the default increment of 5ms.
+
+If you need more flexibility, nothing prevents you from defining your own custom keys to dynamically change the tapping term.
+
+```c
+enum custom_dynamic_tapping_term_keys = {
+ DT_UP_50 = SAFE_RANGE,
+ DT_DOWN_50,
+ DT_UP_X2,
+ DT_DOWN_X2,
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case DT_UP_50:
+ if (record->event.pressed) {
+ g_tapping_term += 50;
+ }
+ break;
+ case DT_DOWN_50:
+ if (record->event.pressed) {
+ g_tapping_term -= 50;
+ }
+ break;
+ case DT_UP_X2:
+ if (record->event.pressed) {
+ g_tapping_term *= 2;
+ }
+ break;
+ case DT_DOWN_X2:
+ if (record->event.pressed) {
+ g_tapping_term /= 2;
+ }
+ break;
+ }
+ return true;
+};
+```
+
+In order for this feature to be effective if you use per-key tapping terms, you need to make a few changes to the syntax of the `get_tapping_term` function. All you need to do is replace every occurrence of `TAPPING_TERM` in the `get_tapping_term` function by lowercase `g_tapping_term`. If you don't do that, you will still see the value typed by `DT_PRNT` go up and down as you configure the tapping term on the fly but you won't feel those changes as they don't get applied. If you can go as low as 10ms and still easily trigger the tap function of a dual-role key, that's a sign that you forgot to make the necessary changes to your `get_tapping_term` function.
+
+For instance, here's how the example `get_tapping_term` shown earlier should look like after the transformation:
+
+```c
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case SFT_T(KC_SPC):
+ return g_tapping_term + 1250;
+ case LT(1, KC_GRV):
+ return 130;
+ default:
+ return g_tapping_term;
+ }
+}
+```
+
+The reason being that `TAPPING_TERM` is a macro that expands to a constant integer and thus cannot be changed at runtime whereas `g_tapping_term` is a variable whose value can be changed at runtime. If you want, you can temporarily enable `DYNAMIC_TAPPING_TERM_ENABLE` to find a suitable tapping term value and then disable that feature and revert back to using the classic syntax for per-key tapping term settings.
+
## Tap-Or-Hold Decision Modes
The code which decides between the tap and hold actions of dual-role keys supports three different modes, in increasing order of preference for the hold action:
@@ -67,7 +145,7 @@ An example of a sequence which is affected by the “permissive hold” mode:
- `KC_L` Up
- `LT(2, KC_A)` Up
-Normally, if you do all this within the `TAPPING_TERM` (default: 200ms), this will be registered as `al` by the firmware and host system. With the `PERMISSIVE_HOLD` option enabled, the Layer Tap key is considered as a layer switch if another key is tapped, and the above sequence would be registered as `KC_RGHT` (the mapping of `L` on layer 2).
+Normally, if you do all this within the `TAPPING_TERM` (default: 200ms), this will be registered as `al` by the firmware and host system. With the `PERMISSIVE_HOLD` option enabled, the Layer Tap key is considered as a layer switch if another key is tapped, and the above sequence would be registered as `KC_RGHT` (the mapping of `L` on layer 2). We could describe this sequence as a “nested press” (the modified key's key down and key up events are “nested” between the dual-role key's key down and key up events).
However, this slightly different sequence will not be affected by the “permissive hold” mode:
@@ -76,7 +154,7 @@ However, this slightly different sequence will not be affected by the “permiss
- `LT(2, KC_A)` Up
- `KC_L` Up
-In the sequence above the dual-role key is released before the other key is released, and if that happens within the tapping term, the “permissive hold” mode will still choose the tap action for the dual-role key, and the sequence will be registered as `al` by the host.
+In the sequence above the dual-role key is released before the other key is released, and if that happens within the tapping term, the “permissive hold” mode will still choose the tap action for the dual-role key, and the sequence will be registered as `al` by the host. We could describe this as a “rolling press” (the two keys' key down and key up events behave as if you were rolling a ball across the two keys, first pressing each key down in sequence and then releasing them in the same order).
?> The `PERMISSIVE_HOLD` option also affects Mod Tap keys, but this may not be noticeable if you do not also enable the `IGNORE_MOD_TAP_INTERRUPT` option for those keys, because the default handler for Mod Tap keys also considers both the “nested press” and “rolling press” sequences like shown above as a modifier hold, not the tap action. If you do not enable `IGNORE_MOD_TAP_INTERRUPT`, the effect of `PERMISSIVE_HOLD` on Mod Tap keys would be limited to reducing the delay before the key events are made visible to the host.
@@ -247,7 +325,7 @@ To enable `retro tapping`, add the following to your `config.h`:
Holding and releasing a dual function key without pressing another key will result in nothing happening. With retro tapping enabled, releasing the key without pressing another will send the original keycode even if it is outside the tapping term.
-For instance, holding and releasing `LT(2, KC_SPACE)` without hitting another key will result in nothing happening. With this enabled, it will send `KC_SPACE` instead.
+For instance, holding and releasing `LT(2, KC_SPC)` without hitting another key will result in nothing happening. With this enabled, it will send `KC_SPC` instead.
For more granular control of this feature, you can add the following to your `config.h`:
@@ -260,7 +338,7 @@ You can then add the following function to your keymap:
```c
bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
- case LT(2, KC_SPACE):
+ case LT(2, KC_SPC):
return true;
default:
return false;
@@ -268,6 +346,10 @@ bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) {
}
```
+### Retro Shift
+
+[Auto Shift,](feature_auto_shift.md) has its own version of `retro tapping` called `retro shift`. It is extremely similar to `retro tapping`, but holding the key past `AUTO_SHIFT_TIMEOUT` results in the value it sends being shifted. Other configurations also affect it differently; see [here](feature_auto_shift.md#retro-shift) for more information.
+
## Why do we include the key record for the per key functions?
One thing that you may notice is that we include the key record for all of the "per key" functions, and may be wondering why we do that.
diff --git a/docs/uart_driver.md b/docs/uart_driver.md
index 4d1716975f5..340b6481892 100644
--- a/docs/uart_driver.md
+++ b/docs/uart_driver.md
@@ -60,30 +60,56 @@ Initialize the UART driver. This function must be called only once, before any o
---
-### `void uart_putchar(uint8_t c)`
+### `void uart_write(uint8_t data)`
Transmit a single byte.
#### Arguments
- - `uint8_t c`
- The byte (character) to send, from 0 to 255.
+ - `uint8_t data`
+ The byte to write.
---
-### `uint8_t uart_getchar(void)`
+### `uint8_t uart_read(void)`
Receive a single byte.
#### Return Value
-The byte read from the receive buffer.
+The byte read from the receive buffer. This function will block if the buffer is empty (ie. no data to read).
+
+---
+
+### `void uart_transmit(const uint8_t *data, uint16_t length)`
+
+Transmit multiple bytes.
+
+#### Arguments
+
+ - `const uint8_t *data`
+ A pointer to the data to write from.
+ - `uint16_t length`
+ The number of bytes to write. Take care not to overrun the length of `data`.
+
+---
+
+### `void uart_receive(char *data, uint16_t length)`
+
+Receive multiple bytes.
+
+#### Arguments
+
+ - `uint8_t *data`
+ A pointer to the buffer to read into.
+ - `uint16_t length`
+ The number of bytes to read. Take care not to overrun the length of `data`.
---
### `bool uart_available(void)`
-Return whether the receive buffer contains data. Call this function to determine if `uart_getchar()` will return meaningful data.
+Return whether the receive buffer contains data. Call this function to determine if `uart_read()` will return data immediately.
#### Return Value
diff --git a/docs/understanding_qmk.md b/docs/understanding_qmk.md
index da622044c3f..016e3d9fd2c 100644
--- a/docs/understanding_qmk.md
+++ b/docs/understanding_qmk.md
@@ -29,7 +29,6 @@ Within `keyboard_task()` you'll find code to handle:
* [Matrix Scanning](#matrix-scanning)
* Mouse Handling
* Serial Link(s)
-* Visualizer
* Keyboard status LEDs (Caps Lock, Num Lock, Scroll Lock)
#### Matrix Scanning
@@ -67,10 +66,10 @@ At the keyboard level we define a C macro (typically named `LAYOUT()`) which map
k30, k31, k32, k33, \
k40, k42 \
) { \
- { k00, k01, k02, k03, }, \
- { k10, k11, k12, k13, }, \
- { k20, k21, k22, KC_NO, }, \
- { k30, k31, k32, k33, }, \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, KC_NO }, \
+ { k30, k31, k32, k33 }, \
{ k40, KC_NO, k42, KC_NO } \
}
```
@@ -83,14 +82,15 @@ You can also use this macro to handle unusual matrix layouts, for example the [C
At the keymap level we make use of our `LAYOUT()` macro above to map keycodes to physical locations to matrix locations. It looks like this:
-```
+```c
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT(
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_P4, KC_P5, KC_P6, \
- KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_P0, KC_PDOT)
+ [0] = LAYOUT(
+ KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6,
+ KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_PDOT
+ )
}
```
@@ -124,7 +124,7 @@ And when our current scan completes it will look like this:
}
```
-Comparing against our keymap we can see that the pressed key is KC_NLCK. From here we dispatch to the `process_record` set of functions.
+Comparing against our keymap we can see that the pressed key is `KC_NUM`. From here we dispatch to the `process_record` set of functions.
@@ -157,6 +157,7 @@ The `process_record()` function itself is deceptively simple, but hidden within
* [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_combo.c#L115)
* [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_printer.c#L77)
* [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_auto_shift.c#L94)
+ * `bool process_dynamic_tapping_term(uint16_t keycode, keyrecord_t *record)`
* [`bool process_terminal(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_terminal.c#L264)
* [Identify and process Quantum-specific keycodes](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L291)
@@ -180,10 +181,6 @@ FIXME: This needs to be written
FIXME: This needs to be written
-#### Visualizer
-
-FIXME: This needs to be written
-
#### Keyboard state LEDs (Caps Lock, Num Lock, Scroll Lock)
FIXME: This needs to be written
diff --git a/docs/unit_testing.md b/docs/unit_testing.md
index a0eef51cb63..47a10557964 100644
--- a/docs/unit_testing.md
+++ b/docs/unit_testing.md
@@ -20,12 +20,12 @@ One thing to remember, is that you have to append `extern "C"` around all of you
## Adding Tests for New or Existing Features
-If you want to unit test some feature, then take a look at the existing serial_link tests, in the `quantum/serial_link/tests folder`, and follow the steps below to create a similar structure.
+If you want to unit test a feature, take a look at some of the existing tests, for example those in the `quantum/sequencer/tests` folder. Then follow the steps below to create a similar structure.
1. If it doesn't already exist, add a test subfolder to the folder containing the feature.
2. Create a `testlist.mk` and a `rules.mk` file in that folder.
3. Include those files from the root folder `testlist.mk`and `build_test.mk` respectively.
-4. Add a new name for your testgroup to the `testlist.mk` file. Each group defined there will be a separate executable. And that's how you can support mocking out different parts. Note that it's worth adding some common prefix, just like it's done for the serial_link tests. The reason for that is that the make command allows substring filtering, so this way you can easily run a subset of the tests.
+4. Add a new name for your testgroup to the `testlist.mk` file. Each group defined there will be a separate executable. And that's how you can support mocking out different parts. Note that it's worth adding some common prefix, just like it's done for the existing tests. The reason for that is that the make command allows substring filtering, so this way you can easily run a subset of the tests.
5. Define the source files and required options in the `rules.mk` file.
* `_SRC` for source files
* `_DEFS` for additional defines
@@ -44,7 +44,7 @@ If there are problems with the tests, you can find the executable in the `./buil
To forward any [debug messages](unit_testing.md#debug-api) to `stderr`, the tests can run with `DEBUG=1`. For example
-```console
+```
make test:all DEBUG=1
```
diff --git a/docs/ws2812_driver.md b/docs/ws2812_driver.md
index 101798f2111..8acac0b3aa6 100644
--- a/docs/ws2812_driver.md
+++ b/docs/ws2812_driver.md
@@ -49,6 +49,19 @@ WS2812_DRIVER = bitbang
!> This driver is not hardware accelerated and may not be performant on heavily loaded systems.
+#### Adjusting bit timings
+
+The WS2812 LED communication topology depends on a serialized timed window. Different versions of the addressable LEDs have differing requirements for the timing parameters, for instance, of the SK6812.
+You can tune these parameters through the definition of the following macros:
+
+| Macro |Default | AVR | ARM |
+|---------------------|--------------------------------------------|--------------------|--------------------|
+|`WS2812_TIMING` |`1250` | :heavy_check_mark: | :heavy_check_mark: |
+|`WS2812_T0H` |`350` | :heavy_check_mark: | :heavy_check_mark: |
+|`WS2812_T0L` |`WS2812_TIMING - WS2812_T0H` | | :heavy_check_mark: |
+|`WS2812_T1H` |`900` | :heavy_check_mark: | :heavy_check_mark: |
+|`WS2812_T1L` |`WS2812_TIMING - WS2812_T1H` | | :heavy_check_mark: |
+
### I2C
Targeting boards where WS2812 support is offloaded to a 2nd MCU. Currently the driver is limited to AVR given the known consumers are ps2avrGB/BMC. To configure it, add this to your rules.mk:
diff --git a/docs/zh-cn/faq_debug.md b/docs/zh-cn/faq_debug.md
index 3b6a369003b..4dba44c275e 100644
--- a/docs/zh-cn/faq_debug.md
+++ b/docs/zh-cn/faq_debug.md
@@ -81,11 +81,6 @@ Size after:
全键无冲还不好用的话试着用`Magic` **N** 命令(默认是`LShift+RShift+N`)。这个命令会在**全键无冲**和**六键无冲**之间临时切换。有些情况**全键无冲**不好用你就需要使用**六键无冲**模式,尤其是在BIOS中。
-如果你的固件使用`BOOTMAGIC_ENABLE`编译的你要用`BootMagic` **N** 命令(默认`Space+N`)打开开关。这个设置保存在EEPROM中并保存在电源循环中。
-
-
-https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch
-
## 指点杆需要复位电路(PS/2 鼠标支持)
如果没有复位电路,由于硬件初始化不正确,您将得到不一致的结果。查看TPM754复位电路。
diff --git a/docs/zh-cn/faq_keymap.md b/docs/zh-cn/faq_keymap.md
index fdfa25ad9ee..ff38f388947 100644
--- a/docs/zh-cn/faq_keymap.md
+++ b/docs/zh-cn/faq_keymap.md
@@ -5,7 +5,7 @@
## 我能用什么键码?
看[键码](keycodes.md)你可以找到你能用的键码索引。可以的话这些链接可以连接到更广泛的文档。
-键码实际上定义在[common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/keycode.h).
+键码实际上定义在[common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/keycode.h).
## 默认的键码什么样?
diff --git a/docs/zh-cn/getting_started_github.md b/docs/zh-cn/getting_started_github.md
index 65994754b96..b4e8e9fa5d0 100644
--- a/docs/zh-cn/getting_started_github.md
+++ b/docs/zh-cn/getting_started_github.md
@@ -32,7 +32,6 @@ Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
-Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
```
现在你本地计算机有QMK的分叉了,你可以添加你的布局了, 为你的键盘编译并刷新固件吧。如果你觉得你的修改很不错, 你可以添加,提交,然后想你的分叉推出(pull)你的改变,像这样:
diff --git a/doxygen-todo b/doxygen-todo
index 643a0df1dab..4151627e4a8 100644
--- a/doxygen-todo
+++ b/doxygen-todo
@@ -6,22 +6,8 @@ tmk_core/protocol/midi/bytequeue
tmk_core/protocol/midi/Config
tmk_core/protocol/usb_hid
tmk_core/protocol/vusb
-tmk_core/tool
-tmk_core/tool/chibios
quantum
-quantum/api
quantum/audio
quantum/keymap_extras
quantum/process_keycode
-quantum/serial_link
-quantum/serial_link/protocol
-quantum/serial_link/system
-quantum/serial_link/tests
-quantum/tools
-quantum/visualizer
-quantum/visualizer/resources
drivers
-drivers/ugfx
-drivers/ugfx/gdisp
-drivers/ugfx/gdisp/is31fl3731c
-drivers/ugfx/gdisp/st7565
diff --git a/drivers/bluetooth/adafruit_ble.cpp b/drivers/bluetooth/adafruit_ble.cpp
new file mode 100644
index 00000000000..34a780e9a5c
--- /dev/null
+++ b/drivers/bluetooth/adafruit_ble.cpp
@@ -0,0 +1,699 @@
+#include "adafruit_ble.h"
+
+#include
+#include
+#include
+#include "debug.h"
+#include "timer.h"
+#include "action_util.h"
+#include "ringbuffer.hpp"
+#include
+#include "spi_master.h"
+#include "wait.h"
+#include "analog.h"
+#include "progmem.h"
+
+// These are the pin assignments for the 32u4 boards.
+// You may define them to something else in your config.h
+// if yours is wired up differently.
+#ifndef ADAFRUIT_BLE_RST_PIN
+# define ADAFRUIT_BLE_RST_PIN D4
+#endif
+
+#ifndef ADAFRUIT_BLE_CS_PIN
+# define ADAFRUIT_BLE_CS_PIN B4
+#endif
+
+#ifndef ADAFRUIT_BLE_IRQ_PIN
+# define ADAFRUIT_BLE_IRQ_PIN E6
+#endif
+
+#ifndef ADAFRUIT_BLE_SCK_DIVISOR
+# define ADAFRUIT_BLE_SCK_DIVISOR 2 // 4MHz SCK/8MHz CPU, calculated for Feather 32U4 BLE
+#endif
+
+#define SAMPLE_BATTERY
+#define ConnectionUpdateInterval 1000 /* milliseconds */
+
+#ifndef BATTERY_LEVEL_PIN
+# define BATTERY_LEVEL_PIN B5
+#endif
+
+static struct {
+ bool is_connected;
+ bool initialized;
+ bool configured;
+
+#define ProbedEvents 1
+#define UsingEvents 2
+ bool event_flags;
+
+#ifdef SAMPLE_BATTERY
+ uint16_t last_battery_update;
+ uint32_t vbat;
+#endif
+ uint16_t last_connection_update;
+} state;
+
+// Commands are encoded using SDEP and sent via SPI
+// https://github.com/adafruit/Adafruit_BluefruitLE_nRF51/blob/master/SDEP.md
+
+#define SdepMaxPayload 16
+struct sdep_msg {
+ uint8_t type;
+ uint8_t cmd_low;
+ uint8_t cmd_high;
+ struct __attribute__((packed)) {
+ uint8_t len : 7;
+ uint8_t more : 1;
+ };
+ uint8_t payload[SdepMaxPayload];
+} __attribute__((packed));
+
+// The recv latency is relatively high, so when we're hammering keys quickly,
+// we want to avoid waiting for the responses in the matrix loop. We maintain
+// a short queue for that. Since there is quite a lot of space overhead for
+// the AT command representation wrapped up in SDEP, we queue the minimal
+// information here.
+
+enum queue_type {
+ QTKeyReport, // 1-byte modifier + 6-byte key report
+ QTConsumer, // 16-bit key code
+#ifdef MOUSE_ENABLE
+ QTMouseMove, // 4-byte mouse report
+#endif
+};
+
+struct queue_item {
+ enum queue_type queue_type;
+ uint16_t added;
+ union __attribute__((packed)) {
+ struct __attribute__((packed)) {
+ uint8_t modifier;
+ uint8_t keys[6];
+ } key;
+
+ uint16_t consumer;
+ struct __attribute__((packed)) {
+ int8_t x, y, scroll, pan;
+ uint8_t buttons;
+ } mousemove;
+ };
+};
+
+// Items that we wish to send
+static RingBuffer send_buf;
+// Pending response; while pending, we can't send any more requests.
+// This records the time at which we sent the command for which we
+// are expecting a response.
+static RingBuffer resp_buf;
+
+static bool process_queue_item(struct queue_item *item, uint16_t timeout);
+
+enum sdep_type {
+ SdepCommand = 0x10,
+ SdepResponse = 0x20,
+ SdepAlert = 0x40,
+ SdepError = 0x80,
+ SdepSlaveNotReady = 0xFE, // Try again later
+ SdepSlaveOverflow = 0xFF, // You read more data than is available
+};
+
+enum ble_cmd {
+ BleInitialize = 0xBEEF,
+ BleAtWrapper = 0x0A00,
+ BleUartTx = 0x0A01,
+ BleUartRx = 0x0A02,
+};
+
+enum ble_system_event_bits {
+ BleSystemConnected = 0,
+ BleSystemDisconnected = 1,
+ BleSystemUartRx = 8,
+ BleSystemMidiRx = 10,
+};
+
+#define SdepTimeout 150 /* milliseconds */
+#define SdepShortTimeout 10 /* milliseconds */
+#define SdepBackOff 25 /* microseconds */
+#define BatteryUpdateInterval 10000 /* milliseconds */
+
+static bool at_command(const char *cmd, char *resp, uint16_t resplen, bool verbose, uint16_t timeout = SdepTimeout);
+static bool at_command_P(const char *cmd, char *resp, uint16_t resplen, bool verbose = false);
+
+// Send a single SDEP packet
+static bool sdep_send_pkt(const struct sdep_msg *msg, uint16_t timeout) {
+ spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
+ uint16_t timerStart = timer_read();
+ bool success = false;
+ bool ready = false;
+
+ do {
+ ready = spi_write(msg->type) != SdepSlaveNotReady;
+ if (ready) {
+ break;
+ }
+
+ // Release it and let it initialize
+ spi_stop();
+ wait_us(SdepBackOff);
+ spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
+ } while (timer_elapsed(timerStart) < timeout);
+
+ if (ready) {
+ // Slave is ready; send the rest of the packet
+ spi_transmit(&msg->cmd_low, sizeof(*msg) - (1 + sizeof(msg->payload)) + msg->len);
+ success = true;
+ }
+
+ spi_stop();
+
+ return success;
+}
+
+static inline void sdep_build_pkt(struct sdep_msg *msg, uint16_t command, const uint8_t *payload, uint8_t len, bool moredata) {
+ msg->type = SdepCommand;
+ msg->cmd_low = command & 0xFF;
+ msg->cmd_high = command >> 8;
+ msg->len = len;
+ msg->more = (moredata && len == SdepMaxPayload) ? 1 : 0;
+
+ static_assert(sizeof(*msg) == 20, "msg is correctly packed");
+
+ memcpy(msg->payload, payload, len);
+}
+
+// Read a single SDEP packet
+static bool sdep_recv_pkt(struct sdep_msg *msg, uint16_t timeout) {
+ bool success = false;
+ uint16_t timerStart = timer_read();
+ bool ready = false;
+
+ do {
+ ready = readPin(ADAFRUIT_BLE_IRQ_PIN);
+ if (ready) {
+ break;
+ }
+ wait_us(1);
+ } while (timer_elapsed(timerStart) < timeout);
+
+ if (ready) {
+ spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
+
+ do {
+ // Read the command type, waiting for the data to be ready
+ msg->type = spi_read();
+ if (msg->type == SdepSlaveNotReady || msg->type == SdepSlaveOverflow) {
+ // Release it and let it initialize
+ spi_stop();
+ wait_us(SdepBackOff);
+ spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
+ continue;
+ }
+
+ // Read the rest of the header
+ spi_receive(&msg->cmd_low, sizeof(*msg) - (1 + sizeof(msg->payload)));
+
+ // and get the payload if there is any
+ if (msg->len <= SdepMaxPayload) {
+ spi_receive(msg->payload, msg->len);
+ }
+ success = true;
+ break;
+ } while (timer_elapsed(timerStart) < timeout);
+
+ spi_stop();
+ }
+ return success;
+}
+
+static void resp_buf_read_one(bool greedy) {
+ uint16_t last_send;
+ if (!resp_buf.peek(last_send)) {
+ return;
+ }
+
+ if (readPin(ADAFRUIT_BLE_IRQ_PIN)) {
+ struct sdep_msg msg;
+
+ again:
+ if (sdep_recv_pkt(&msg, SdepTimeout)) {
+ if (!msg.more) {
+ // We got it; consume this entry
+ resp_buf.get(last_send);
+ dprintf("recv latency %dms\n", TIMER_DIFF_16(timer_read(), last_send));
+ }
+
+ if (greedy && resp_buf.peek(last_send) && readPin(ADAFRUIT_BLE_IRQ_PIN)) {
+ goto again;
+ }
+ }
+
+ } else if (timer_elapsed(last_send) > SdepTimeout * 2) {
+ dprintf("waiting_for_result: timeout, resp_buf size %d\n", (int)resp_buf.size());
+
+ // Timed out: consume this entry
+ resp_buf.get(last_send);
+ }
+}
+
+static void send_buf_send_one(uint16_t timeout = SdepTimeout) {
+ struct queue_item item;
+
+ // Don't send anything more until we get an ACK
+ if (!resp_buf.empty()) {
+ return;
+ }
+
+ if (!send_buf.peek(item)) {
+ return;
+ }
+ if (process_queue_item(&item, timeout)) {
+ // commit that peek
+ send_buf.get(item);
+ dprintf("send_buf_send_one: have %d remaining\n", (int)send_buf.size());
+ } else {
+ dprint("failed to send, will retry\n");
+ wait_ms(SdepTimeout);
+ resp_buf_read_one(true);
+ }
+}
+
+static void resp_buf_wait(const char *cmd) {
+ bool didPrint = false;
+ while (!resp_buf.empty()) {
+ if (!didPrint) {
+ dprintf("wait on buf for %s\n", cmd);
+ didPrint = true;
+ }
+ resp_buf_read_one(true);
+ }
+}
+
+static bool ble_init(void) {
+ state.initialized = false;
+ state.configured = false;
+ state.is_connected = false;
+
+ setPinInput(ADAFRUIT_BLE_IRQ_PIN);
+
+ spi_init();
+
+ // Perform a hardware reset
+ setPinOutput(ADAFRUIT_BLE_RST_PIN);
+ writePinHigh(ADAFRUIT_BLE_RST_PIN);
+ writePinLow(ADAFRUIT_BLE_RST_PIN);
+ wait_ms(10);
+ writePinHigh(ADAFRUIT_BLE_RST_PIN);
+
+ wait_ms(1000); // Give it a second to initialize
+
+ state.initialized = true;
+ return state.initialized;
+}
+
+static inline uint8_t min(uint8_t a, uint8_t b) { return a < b ? a : b; }
+
+static bool read_response(char *resp, uint16_t resplen, bool verbose) {
+ char *dest = resp;
+ char *end = dest + resplen;
+
+ while (true) {
+ struct sdep_msg msg;
+
+ if (!sdep_recv_pkt(&msg, 2 * SdepTimeout)) {
+ dprint("sdep_recv_pkt failed\n");
+ return false;
+ }
+
+ if (msg.type != SdepResponse) {
+ *resp = 0;
+ return false;
+ }
+
+ uint8_t len = min(msg.len, end - dest);
+ if (len > 0) {
+ memcpy(dest, msg.payload, len);
+ dest += len;
+ }
+
+ if (!msg.more) {
+ // No more data is expected!
+ break;
+ }
+ }
+
+ // Ensure the response is NUL terminated
+ *dest = 0;
+
+ // "Parse" the result text; we want to snip off the trailing OK or ERROR line
+ // Rewind past the possible trailing CRLF so that we can strip it
+ --dest;
+ while (dest > resp && (dest[0] == '\n' || dest[0] == '\r')) {
+ *dest = 0;
+ --dest;
+ }
+
+ // Look back for start of preceeding line
+ char *last_line = strrchr(resp, '\n');
+ if (last_line) {
+ ++last_line;
+ } else {
+ last_line = resp;
+ }
+
+ bool success = false;
+ static const char kOK[] PROGMEM = "OK";
+
+ success = !strcmp_P(last_line, kOK);
+
+ if (verbose || !success) {
+ dprintf("result: %s\n", resp);
+ }
+ return success;
+}
+
+static bool at_command(const char *cmd, char *resp, uint16_t resplen, bool verbose, uint16_t timeout) {
+ const char * end = cmd + strlen(cmd);
+ struct sdep_msg msg;
+
+ if (verbose) {
+ dprintf("ble send: %s\n", cmd);
+ }
+
+ if (resp) {
+ // They want to decode the response, so we need to flush and wait
+ // for all pending I/O to finish before we start this one, so
+ // that we don't confuse the results
+ resp_buf_wait(cmd);
+ *resp = 0;
+ }
+
+ // Fragment the command into a series of SDEP packets
+ while (end - cmd > SdepMaxPayload) {
+ sdep_build_pkt(&msg, BleAtWrapper, (uint8_t *)cmd, SdepMaxPayload, true);
+ if (!sdep_send_pkt(&msg, timeout)) {
+ return false;
+ }
+ cmd += SdepMaxPayload;
+ }
+
+ sdep_build_pkt(&msg, BleAtWrapper, (uint8_t *)cmd, end - cmd, false);
+ if (!sdep_send_pkt(&msg, timeout)) {
+ return false;
+ }
+
+ if (resp == NULL) {
+ uint16_t now = timer_read();
+ while (!resp_buf.enqueue(now)) {
+ resp_buf_read_one(false);
+ }
+ uint16_t later = timer_read();
+ if (TIMER_DIFF_16(later, now) > 0) {
+ dprintf("waited %dms for resp_buf\n", TIMER_DIFF_16(later, now));
+ }
+ return true;
+ }
+
+ return read_response(resp, resplen, verbose);
+}
+
+bool at_command_P(const char *cmd, char *resp, uint16_t resplen, bool verbose) {
+ char *cmdbuf = (char *)alloca(strlen_P(cmd) + 1);
+ strcpy_P(cmdbuf, cmd);
+ return at_command(cmdbuf, resp, resplen, verbose);
+}
+
+bool adafruit_ble_is_connected(void) { return state.is_connected; }
+
+bool adafruit_ble_enable_keyboard(void) {
+ char resbuf[128];
+
+ if (!state.initialized && !ble_init()) {
+ return false;
+ }
+
+ state.configured = false;
+
+ // Disable command echo
+ static const char kEcho[] PROGMEM = "ATE=0";
+ // Make the advertised name match the keyboard
+ static const char kGapDevName[] PROGMEM = "AT+GAPDEVNAME=" STR(PRODUCT);
+ // Turn on keyboard support
+ static const char kHidEnOn[] PROGMEM = "AT+BLEHIDEN=1";
+
+ // Adjust intervals to improve latency. This causes the "central"
+ // system (computer/tablet) to poll us every 10-30 ms. We can't
+ // set a smaller value than 10ms, and 30ms seems to be the natural
+ // processing time on my macbook. Keeping it constrained to that
+ // feels reasonable to type to.
+ static const char kGapIntervals[] PROGMEM = "AT+GAPINTERVALS=10,30,,";
+
+ // Reset the device so that it picks up the above changes
+ static const char kATZ[] PROGMEM = "ATZ";
+
+ // Turn down the power level a bit
+ static const char kPower[] PROGMEM = "AT+BLEPOWERLEVEL=-12";
+ static PGM_P const configure_commands[] PROGMEM = {
+ kEcho, kGapIntervals, kGapDevName, kHidEnOn, kPower, kATZ,
+ };
+
+ uint8_t i;
+ for (i = 0; i < sizeof(configure_commands) / sizeof(configure_commands[0]); ++i) {
+ PGM_P cmd;
+ memcpy_P(&cmd, configure_commands + i, sizeof(cmd));
+
+ if (!at_command_P(cmd, resbuf, sizeof(resbuf))) {
+ dprintf("failed BLE command: %S: %s\n", cmd, resbuf);
+ goto fail;
+ }
+ }
+
+ state.configured = true;
+
+ // Check connection status in a little while; allow the ATZ time
+ // to kick in.
+ state.last_connection_update = timer_read();
+fail:
+ return state.configured;
+}
+
+static void set_connected(bool connected) {
+ if (connected != state.is_connected) {
+ if (connected) {
+ dprint("BLE connected\n");
+ } else {
+ dprint("BLE disconnected\n");
+ }
+ state.is_connected = connected;
+
+ // TODO: if modifiers are down on the USB interface and
+ // we cut over to BLE or vice versa, they will remain stuck.
+ // This feels like a good point to do something like clearing
+ // the keyboard and/or generating a fake all keys up message.
+ // However, I've noticed that it takes a couple of seconds
+ // for macOS to to start recognizing key presses after BLE
+ // is in the connected state, so I worry that doing that
+ // here may not be good enough.
+ }
+}
+
+void adafruit_ble_task(void) {
+ char resbuf[48];
+
+ if (!state.configured && !adafruit_ble_enable_keyboard()) {
+ return;
+ }
+ resp_buf_read_one(true);
+ send_buf_send_one(SdepShortTimeout);
+
+ if (resp_buf.empty() && (state.event_flags & UsingEvents) && readPin(ADAFRUIT_BLE_IRQ_PIN)) {
+ // Must be an event update
+ if (at_command_P(PSTR("AT+EVENTSTATUS"), resbuf, sizeof(resbuf))) {
+ uint32_t mask = strtoul(resbuf, NULL, 16);
+
+ if (mask & BleSystemConnected) {
+ set_connected(true);
+ } else if (mask & BleSystemDisconnected) {
+ set_connected(false);
+ }
+ }
+ }
+
+ if (timer_elapsed(state.last_connection_update) > ConnectionUpdateInterval) {
+ bool shouldPoll = true;
+ if (!(state.event_flags & ProbedEvents)) {
+ // Request notifications about connection status changes.
+ // This only works in SPIFRIEND firmware > 0.6.7, which is why
+ // we check for this conditionally here.
+ // Note that at the time of writing, HID reports only work correctly
+ // with Apple products on firmware version 0.6.7!
+ // https://forums.adafruit.com/viewtopic.php?f=8&t=104052
+ if (at_command_P(PSTR("AT+EVENTENABLE=0x1"), resbuf, sizeof(resbuf))) {
+ at_command_P(PSTR("AT+EVENTENABLE=0x2"), resbuf, sizeof(resbuf));
+ state.event_flags |= UsingEvents;
+ }
+ state.event_flags |= ProbedEvents;
+
+ // leave shouldPoll == true so that we check at least once
+ // before relying solely on events
+ } else {
+ shouldPoll = false;
+ }
+
+ static const char kGetConn[] PROGMEM = "AT+GAPGETCONN";
+ state.last_connection_update = timer_read();
+
+ if (at_command_P(kGetConn, resbuf, sizeof(resbuf))) {
+ set_connected(atoi(resbuf));
+ }
+ }
+
+#ifdef SAMPLE_BATTERY
+ if (timer_elapsed(state.last_battery_update) > BatteryUpdateInterval && resp_buf.empty()) {
+ state.last_battery_update = timer_read();
+
+ state.vbat = analogReadPin(BATTERY_LEVEL_PIN);
+ }
+#endif
+}
+
+static bool process_queue_item(struct queue_item *item, uint16_t timeout) {
+ char cmdbuf[48];
+ char fmtbuf[64];
+
+ // Arrange to re-check connection after keys have settled
+ state.last_connection_update = timer_read();
+
+#if 1
+ if (TIMER_DIFF_16(state.last_connection_update, item->added) > 0) {
+ dprintf("send latency %dms\n", TIMER_DIFF_16(state.last_connection_update, item->added));
+ }
+#endif
+
+ switch (item->queue_type) {
+ case QTKeyReport:
+ strcpy_P(fmtbuf, PSTR("AT+BLEKEYBOARDCODE=%02x-00-%02x-%02x-%02x-%02x-%02x-%02x"));
+ snprintf(cmdbuf, sizeof(cmdbuf), fmtbuf, item->key.modifier, item->key.keys[0], item->key.keys[1], item->key.keys[2], item->key.keys[3], item->key.keys[4], item->key.keys[5]);
+ return at_command(cmdbuf, NULL, 0, true, timeout);
+
+ case QTConsumer:
+ strcpy_P(fmtbuf, PSTR("AT+BLEHIDCONTROLKEY=0x%04x"));
+ snprintf(cmdbuf, sizeof(cmdbuf), fmtbuf, item->consumer);
+ return at_command(cmdbuf, NULL, 0, true, timeout);
+
+#ifdef MOUSE_ENABLE
+ case QTMouseMove:
+ strcpy_P(fmtbuf, PSTR("AT+BLEHIDMOUSEMOVE=%d,%d,%d,%d"));
+ snprintf(cmdbuf, sizeof(cmdbuf), fmtbuf, item->mousemove.x, item->mousemove.y, item->mousemove.scroll, item->mousemove.pan);
+ if (!at_command(cmdbuf, NULL, 0, true, timeout)) {
+ return false;
+ }
+ strcpy_P(cmdbuf, PSTR("AT+BLEHIDMOUSEBUTTON="));
+ if (item->mousemove.buttons & MOUSE_BTN1) {
+ strcat(cmdbuf, "L");
+ }
+ if (item->mousemove.buttons & MOUSE_BTN2) {
+ strcat(cmdbuf, "R");
+ }
+ if (item->mousemove.buttons & MOUSE_BTN3) {
+ strcat(cmdbuf, "M");
+ }
+ if (item->mousemove.buttons == 0) {
+ strcat(cmdbuf, "0");
+ }
+ return at_command(cmdbuf, NULL, 0, true, timeout);
+#endif
+ default:
+ return true;
+ }
+}
+
+void adafruit_ble_send_keys(uint8_t hid_modifier_mask, uint8_t *keys, uint8_t nkeys) {
+ struct queue_item item;
+ bool didWait = false;
+
+ item.queue_type = QTKeyReport;
+ item.key.modifier = hid_modifier_mask;
+ item.added = timer_read();
+
+ while (nkeys >= 0) {
+ item.key.keys[0] = keys[0];
+ item.key.keys[1] = nkeys >= 1 ? keys[1] : 0;
+ item.key.keys[2] = nkeys >= 2 ? keys[2] : 0;
+ item.key.keys[3] = nkeys >= 3 ? keys[3] : 0;
+ item.key.keys[4] = nkeys >= 4 ? keys[4] : 0;
+ item.key.keys[5] = nkeys >= 5 ? keys[5] : 0;
+
+ if (!send_buf.enqueue(item)) {
+ if (!didWait) {
+ dprint("wait for buf space\n");
+ didWait = true;
+ }
+ send_buf_send_one();
+ continue;
+ }
+
+ if (nkeys <= 6) {
+ return;
+ }
+
+ nkeys -= 6;
+ keys += 6;
+ }
+}
+
+void adafruit_ble_send_consumer_key(uint16_t usage) {
+ struct queue_item item;
+
+ item.queue_type = QTConsumer;
+ item.consumer = usage;
+
+ while (!send_buf.enqueue(item)) {
+ send_buf_send_one();
+ }
+}
+
+#ifdef MOUSE_ENABLE
+void adafruit_ble_send_mouse_move(int8_t x, int8_t y, int8_t scroll, int8_t pan, uint8_t buttons) {
+ struct queue_item item;
+
+ item.queue_type = QTMouseMove;
+ item.mousemove.x = x;
+ item.mousemove.y = y;
+ item.mousemove.scroll = scroll;
+ item.mousemove.pan = pan;
+ item.mousemove.buttons = buttons;
+
+ while (!send_buf.enqueue(item)) {
+ send_buf_send_one();
+ }
+}
+#endif
+
+uint32_t adafruit_ble_read_battery_voltage(void) { return state.vbat; }
+
+bool adafruit_ble_set_mode_leds(bool on) {
+ if (!state.configured) {
+ return false;
+ }
+
+ // The "mode" led is the red blinky one
+ at_command_P(on ? PSTR("AT+HWMODELED=1") : PSTR("AT+HWMODELED=0"), NULL, 0);
+
+ // Pin 19 is the blue "connected" LED; turn that off too.
+ // When turning LEDs back on, don't turn that LED on if we're
+ // not connected, as that would be confusing.
+ at_command_P(on && state.is_connected ? PSTR("AT+HWGPIO=19,1") : PSTR("AT+HWGPIO=19,0"), NULL, 0);
+ return true;
+}
+
+// https://learn.adafruit.com/adafruit-feather-32u4-bluefruit-le/ble-generic#at-plus-blepowerlevel
+bool adafruit_ble_set_power_level(int8_t level) {
+ char cmd[46];
+ if (!state.configured) {
+ return false;
+ }
+ snprintf(cmd, sizeof(cmd), "AT+BLEPOWERLEVEL=%d", level);
+ return at_command(cmd, NULL, 0, false);
+}
diff --git a/tmk_core/protocol/lufa/adafruit_ble.h b/drivers/bluetooth/adafruit_ble.h
similarity index 100%
rename from tmk_core/protocol/lufa/adafruit_ble.h
rename to drivers/bluetooth/adafruit_ble.h
diff --git a/tmk_core/protocol/lufa/outputselect.c b/drivers/bluetooth/outputselect.c
similarity index 100%
rename from tmk_core/protocol/lufa/outputselect.c
rename to drivers/bluetooth/outputselect.c
diff --git a/tmk_core/protocol/lufa/outputselect.h b/drivers/bluetooth/outputselect.h
similarity index 100%
rename from tmk_core/protocol/lufa/outputselect.h
rename to drivers/bluetooth/outputselect.h
diff --git a/tmk_core/protocol/lufa/ringbuffer.hpp b/drivers/bluetooth/ringbuffer.hpp
similarity index 100%
rename from tmk_core/protocol/lufa/ringbuffer.hpp
rename to drivers/bluetooth/ringbuffer.hpp
diff --git a/drivers/haptic/solenoid.c b/drivers/haptic/solenoid.c
index 25cf344655b..7a09940f78c 100644
--- a/drivers/haptic/solenoid.c
+++ b/drivers/haptic/solenoid.c
@@ -19,6 +19,7 @@
#include "solenoid.h"
#include "haptic.h"
#include "gpio.h"
+#include "usb_device_state.h"
bool solenoid_on = false;
bool solenoid_buzzing = false;
@@ -36,7 +37,7 @@ void solenoid_set_buzz(int buzz) { haptic_set_buzz(buzz); }
void solenoid_set_dwell(uint8_t dwell) { solenoid_dwell = dwell; }
void solenoid_stop(void) {
- writePinLow(SOLENOID_PIN);
+ SOLENOID_PIN_WRITE_INACTIVE();
solenoid_on = false;
solenoid_buzzing = false;
}
@@ -48,7 +49,7 @@ void solenoid_fire(void) {
solenoid_on = true;
solenoid_buzzing = true;
solenoid_start = timer_read();
- writePinHigh(SOLENOID_PIN);
+ SOLENOID_PIN_WRITE_ACTIVE();
}
void solenoid_check(void) {
@@ -69,20 +70,23 @@ void solenoid_check(void) {
if ((elapsed % (SOLENOID_BUZZ_ACTUATED + SOLENOID_BUZZ_NONACTUATED)) < SOLENOID_BUZZ_ACTUATED) {
if (!solenoid_buzzing) {
solenoid_buzzing = true;
- writePinHigh(SOLENOID_PIN);
+ SOLENOID_PIN_WRITE_ACTIVE();
}
} else {
if (solenoid_buzzing) {
solenoid_buzzing = false;
- writePinLow(SOLENOID_PIN);
+ SOLENOID_PIN_WRITE_INACTIVE();
}
}
}
}
void solenoid_setup(void) {
+ SOLENOID_PIN_WRITE_INACTIVE();
setPinOutput(SOLENOID_PIN);
- solenoid_fire();
+ if ((!HAPTIC_OFF_IN_LOW_POWER) || (usb_device_state == USB_DEVICE_STATE_CONFIGURED)) {
+ solenoid_fire();
+ }
}
-void solenoid_shutdown(void) { writePinLow(SOLENOID_PIN); }
+void solenoid_shutdown(void) { SOLENOID_PIN_WRITE_INACTIVE(); }
diff --git a/drivers/haptic/solenoid.h b/drivers/haptic/solenoid.h
index f2a3bc4c309..653148154f4 100644
--- a/drivers/haptic/solenoid.h
+++ b/drivers/haptic/solenoid.h
@@ -49,6 +49,14 @@
# error SOLENOID_PIN not defined
#endif
+#ifdef SOLENOID_PIN_ACTIVE_LOW
+# define SOLENOID_PIN_WRITE_ACTIVE() writePinLow(SOLENOID_PIN)
+# define SOLENOID_PIN_WRITE_INACTIVE() writePinHigh(SOLENOID_PIN)
+#else
+# define SOLENOID_PIN_WRITE_ACTIVE() writePinHigh(SOLENOID_PIN)
+# define SOLENOID_PIN_WRITE_INACTIVE() writePinLow(SOLENOID_PIN)
+#endif
+
void solenoid_buzz_on(void);
void solenoid_buzz_off(void);
void solenoid_set_buzz(int buzz);
diff --git a/drivers/led/apa102.c b/drivers/led/apa102.c
index 7396dc3c551..00e7eb45053 100644
--- a/drivers/led/apa102.c
+++ b/drivers/led/apa102.c
@@ -24,8 +24,8 @@
# elif defined(PROTOCOL_CHIBIOS)
# include "hal.h"
-# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX)
-# define APA102_NOPS (100 / (1000000000L / (STM32_SYSCLK / 4))) // This calculates how many loops of 4 nops to run to delay 100 ns
+# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX) || defined(GD32VF103)
+# define APA102_NOPS (100 / (1000000000L / (CPU_CLOCK / 4))) // This calculates how many loops of 4 nops to run to delay 100 ns
# else
# error("APA102_NOPS configuration required")
# define APA102_NOPS 0 // this just pleases the compile so the above error is easier to spot
diff --git a/drivers/led/aw20216.c b/drivers/led/aw20216.c
index c608c0ab446..2c7ff8f0889 100644
--- a/drivers/led/aw20216.c
+++ b/drivers/led/aw20216.c
@@ -119,7 +119,8 @@ void AW20216_init(pin_t cs_pin, pin_t en_pin) {
}
void AW20216_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
- aw_led led = g_aw_leds[index];
+ aw_led led;
+ memcpy_P(&led, (&g_aw_leds[index]), sizeof(led));
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
diff --git a/drivers/led/aw20216.h b/drivers/led/aw20216.h
index 97ac6dc5bf0..0a17050fed8 100644
--- a/drivers/led/aw20216.h
+++ b/drivers/led/aw20216.h
@@ -28,7 +28,7 @@ typedef struct aw_led {
uint8_t b;
} aw_led;
-extern const aw_led __flash g_aw_leds[DRIVER_LED_TOTAL];
+extern const aw_led PROGMEM g_aw_leds[DRIVER_LED_TOTAL];
void AW20216_init(pin_t cs_pin, pin_t en_pin);
void AW20216_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
diff --git a/drivers/led/ckled2001.c b/drivers/led/ckled2001.c
new file mode 100644
index 00000000000..990e50cb606
--- /dev/null
+++ b/drivers/led/ckled2001.c
@@ -0,0 +1,228 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "ckled2001.h"
+#include "i2c_master.h"
+#include "wait.h"
+
+#ifndef CKLED2001_TIMEOUT
+# define CKLED2001_TIMEOUT 100
+#endif
+
+#ifndef CKLED2001_PERSISTENCE
+# define CKLED2001_PERSISTENCE 0
+#endif
+
+#ifndef PHASE_CHANNEL
+# define PHASE_CHANNEL MSKPHASE_12CHANNEL
+#endif
+
+// Transfer buffer for TWITransmitData()
+uint8_t g_twi_transfer_buffer[20];
+
+// These buffers match the CKLED2001 PWM registers.
+// The control buffers match the PG0 LED On/Off registers.
+// Storing them like this is optimal for I2C transfers to the registers.
+// We could optimize this and take out the unused registers from these
+// buffers and the transfers in CKLED2001_write_pwm_buffer() but it's
+// probably not worth the extra complexity.
+uint8_t g_pwm_buffer[DRIVER_COUNT][192];
+bool g_pwm_buffer_update_required[DRIVER_COUNT] = {false};
+
+uint8_t g_led_control_registers[DRIVER_COUNT][24] = {0};
+bool g_led_control_registers_update_required[DRIVER_COUNT] = {false};
+
+bool CKLED2001_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+ // If the transaction fails function returns false.
+ g_twi_transfer_buffer[0] = reg;
+ g_twi_transfer_buffer[1] = data;
+
+#if CKLED2001_PERSISTENCE > 0
+ for (uint8_t i = 0; i < CKLED2001_PERSISTENCE; i++) {
+ if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, CKLED2001_TIMEOUT) != 0) {
+ return false;
+ }
+ }
+#else
+ if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, CKLED2001_TIMEOUT) != 0) {
+ return false;
+ }
+#endif
+ return true;
+}
+
+bool CKLED2001_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
+ // Assumes PG1 is already selected.
+ // If any of the transactions fails function returns false.
+ // Transmit PWM registers in 12 transfers of 16 bytes.
+ // g_twi_transfer_buffer[] is 20 bytes
+
+ // Iterate over the pwm_buffer contents at 16 byte intervals.
+ for (int i = 0; i < 192; i += 16) {
+ g_twi_transfer_buffer[0] = i;
+ // Copy the data from i to i+15.
+ // Device will auto-increment register for data after the first byte
+ // Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer.
+ for (int j = 0; j < 16; j++) {
+ g_twi_transfer_buffer[1 + j] = pwm_buffer[i + j];
+ }
+
+#if CKLED2001_PERSISTENCE > 0
+ for (uint8_t i = 0; i < CKLED2001_PERSISTENCE; i++) {
+ if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, CKLED2001_TIMEOUT) != 0) {
+ return false;
+ }
+ }
+#else
+ if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, CKLED2001_TIMEOUT) != 0) {
+ return false;
+ }
+#endif
+ }
+ return true;
+}
+
+void CKLED2001_init(uint8_t addr) {
+ // Select to function page
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, FUNCTION_PAGE);
+ // Setting LED driver to shutdown mode
+ CKLED2001_write_register(addr, CONFIGURATION_REG, MSKSW_SHUT_DOWN_MODE);
+ // Setting internal channel pulldown/pullup
+ CKLED2001_write_register(addr, PDU_REG, MSKSET_CA_CB_CHANNEL);
+ // Select number of scan phase
+ CKLED2001_write_register(addr, SCAN_PHASE_REG, PHASE_CHANNEL);
+ // Setting PWM Delay Phase
+ CKLED2001_write_register(addr, SLEW_RATE_CONTROL_MODE1_REG, MSKPWM_DELAY_PHASE_ENABLE);
+ // Setting Driving/Sinking Channel Slew Rate
+ CKLED2001_write_register(addr, SLEW_RATE_CONTROL_MODE2_REG, MSKDRIVING_SINKING_CHHANNEL_SLEWRATE_ENABLE);
+ // Setting Iref
+ CKLED2001_write_register(addr, SOFTWARE_SLEEP_REG, MSKSLEEP_DISABLE);
+ // Set LED CONTROL PAGE (Page 0)
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, LED_CONTROL_PAGE);
+ for (int i = 0; i < LED_CONTROL_ON_OFF_LENGTH; i++) {
+ CKLED2001_write_register(addr, i, 0x00);
+ }
+
+ // Set PWM PAGE (Page 1)
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, LED_PWM_PAGE);
+ for (int i = 0; i < LED_CURRENT_TUNE_LENGTH; i++) {
+ CKLED2001_write_register(addr, i, 0x00);
+ }
+
+ // Set CURRENT PAGE (Page 4)
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, CURRENT_TUNE_PAGE);
+ for (int i = 0; i < LED_CURRENT_TUNE_LENGTH; i++) {
+ CKLED2001_write_register(addr, i, 0xFF);
+ }
+
+ // Enable LEDs ON/OFF
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, LED_CONTROL_PAGE);
+ for (int i = 0; i < LED_CONTROL_ON_OFF_LENGTH; i++) {
+ CKLED2001_write_register(addr, i, 0xFF);
+ }
+
+ // Select to function page
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, FUNCTION_PAGE);
+ // Setting LED driver to normal mode
+ CKLED2001_write_register(addr, CONFIGURATION_REG, MSKSW_NORMAL_MODE);
+}
+
+void CKLED2001_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ ckled2001_led led;
+ if (index >= 0 && index < DRIVER_LED_TOTAL) {
+ memcpy_P(&led, (&g_ckled2001_leds[index]), sizeof(led));
+
+ g_pwm_buffer[led.driver][led.r] = red;
+ g_pwm_buffer[led.driver][led.g] = green;
+ g_pwm_buffer[led.driver][led.b] = blue;
+ g_pwm_buffer_update_required[led.driver] = true;
+ }
+}
+
+void CKLED2001_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+ CKLED2001_set_color(i, red, green, blue);
+ }
+}
+
+void CKLED2001_set_led_control_register(uint8_t index, bool red, bool green, bool blue) {
+ ckled2001_led led;
+ memcpy_P(&led, (&g_ckled2001_leds[index]), sizeof(led));
+
+ uint8_t control_register_r = led.r / 8;
+ uint8_t control_register_g = led.g / 8;
+ uint8_t control_register_b = led.b / 8;
+ uint8_t bit_r = led.r % 8;
+ uint8_t bit_g = led.g % 8;
+ uint8_t bit_b = led.b % 8;
+
+ if (red) {
+ g_led_control_registers[led.driver][control_register_r] |= (1 << bit_r);
+ } else {
+ g_led_control_registers[led.driver][control_register_r] &= ~(1 << bit_r);
+ }
+ if (green) {
+ g_led_control_registers[led.driver][control_register_g] |= (1 << bit_g);
+ } else {
+ g_led_control_registers[led.driver][control_register_g] &= ~(1 << bit_g);
+ }
+ if (blue) {
+ g_led_control_registers[led.driver][control_register_b] |= (1 << bit_b);
+ } else {
+ g_led_control_registers[led.driver][control_register_b] &= ~(1 << bit_b);
+ }
+
+ g_led_control_registers_update_required[led.driver] = true;
+}
+
+void CKLED2001_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, LED_PWM_PAGE);
+
+ // If any of the transactions fail we risk writing dirty PG0,
+ // refresh page 0 just in case.
+ if (!CKLED2001_write_pwm_buffer(addr, g_pwm_buffer[index])) {
+ g_led_control_registers_update_required[index] = true;
+ }
+ }
+ g_pwm_buffer_update_required[index] = false;
+}
+
+void CKLED2001_update_led_control_registers(uint8_t addr, uint8_t index) {
+ if (g_led_control_registers_update_required[index]) {
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, LED_CONTROL_PAGE);
+ for (int i = 0; i < 24; i++) {
+ CKLED2001_write_register(addr, i, g_led_control_registers[index][i]);
+ }
+ }
+ g_led_control_registers_update_required[index] = false;
+}
+
+void CKLED2001_return_normal(uint8_t addr) {
+ // Select to function page
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, FUNCTION_PAGE);
+ // Setting LED driver to normal mode
+ CKLED2001_write_register(addr, CONFIGURATION_REG, MSKSW_NORMAL_MODE);
+}
+
+void CKLED2001_shutdown(uint8_t addr) {
+ // Select to function page
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, FUNCTION_PAGE);
+ // Setting LED driver to shutdown mode
+ CKLED2001_write_register(addr, CONFIGURATION_REG, MSKSW_SHUT_DOWN_MODE);
+ // Write SW Sleep Register
+ CKLED2001_write_register(addr, SOFTWARE_SLEEP_REG, MSKSLEEP_ENABLE);
+}
diff --git a/drivers/led/ckled2001.h b/drivers/led/ckled2001.h
new file mode 100644
index 00000000000..1967961d205
--- /dev/null
+++ b/drivers/led/ckled2001.h
@@ -0,0 +1,339 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include
+#include
+#include "progmem.h"
+
+typedef struct ckled2001_led {
+ uint8_t driver : 2;
+ uint8_t r;
+ uint8_t g;
+ uint8_t b;
+} __attribute__((packed)) ckled2001_led;
+
+extern const ckled2001_led PROGMEM g_ckled2001_leds[DRIVER_LED_TOTAL];
+
+void CKLED2001_init(uint8_t addr);
+bool CKLED2001_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+bool CKLED2001_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
+
+void CKLED2001_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
+void CKLED2001_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
+
+void CKLED2001_set_led_control_register(uint8_t index, bool red, bool green, bool blue);
+
+// This should not be called from an interrupt
+// (eg. from a timer interrupt).
+// Call this while idle (in between matrix scans).
+// If the buffer is dirty, it will update the driver with the buffer.
+void CKLED2001_update_pwm_buffers(uint8_t addr, uint8_t index);
+void CKLED2001_update_led_control_registers(uint8_t addr, uint8_t index);
+
+void CKLED2001_return_normal(uint8_t addr);
+void CKLED2001_shutdown(uint8_t addr);
+
+// Registers Page Define
+#define CONFIGURE_CMD_PAGE 0xFD
+#define LED_CONTROL_PAGE 0x00
+#define LED_PWM_PAGE 0x01
+#define FUNCTION_PAGE 0x03
+#define CURRENT_TUNE_PAGE 0x04
+
+// Function Register: address 0x00
+#define CONFIGURATION_REG 0x00
+#define MSKSW_SHUT_DOWN_MODE (0x0 << 0)
+#define MSKSW_NORMAL_MODE (0x1 << 0)
+
+#define DRIVER_ID_REG 0x11
+#define CKLED2001_ID 0x8A
+
+#define PDU_REG 0x13
+#define MSKSET_CA_CB_CHANNEL 0xAA
+#define MSKCLR_CA_CB_CHANNEL 0x00
+
+#define SCAN_PHASE_REG 0x14
+#define MSKPHASE_12CHANNEL 0x00
+#define MSKPHASE_11CHANNEL 0x01
+#define MSKPHASE_10CHANNEL 0x02
+#define MSKPHASE_9CHANNEL 0x03
+#define MSKPHASE_8CHANNEL 0x04
+#define MSKPHASE_7CHANNEL 0x05
+#define MSKPHASE_6CHANNEL 0x06
+#define MSKPHASE_5CHANNEL 0x07
+#define MSKPHASE_4CHANNEL 0x08
+#define MSKPHASE_3CHANNEL 0x09
+#define MSKPHASE_2CHANNEL 0x0A
+#define MSKPHASE_1CHANNEL 0x0B
+
+#define SLEW_RATE_CONTROL_MODE1_REG 0x15
+#define MSKPWM_DELAY_PHASE_ENABLE 0x04
+#define MSKPWM_DELAY_PHASE_DISABLE 0x00
+
+#define SLEW_RATE_CONTROL_MODE2_REG 0x16
+#define MSKDRIVING_SINKING_CHHANNEL_SLEWRATE_ENABLE 0xC0
+#define MSKDRIVING_SINKING_CHHANNEL_SLEWRATE_DISABLE 0x00
+
+#define OPEN_SHORT_ENABLE_REG 0x17
+#define MSKOPEN_DETECTION_ENABLE (0x01 << 7)
+#define MSKOPEN_DETECTION_DISABLE (0x00)
+
+#define MSKSHORT_DETECTION_ENABLE (0x01 << 6)
+#define MSKSHORT_DETECTION_DISABLE (0x00)
+
+#define OPEN_SHORT_DUTY_REG 0x18
+#define OPEN_SHORT_FLAG_REG 0x19
+
+#define MSKOPEN_DETECTION_INTERRUPT_ENABLE (0x01 << 7)
+#define MSKOPEN_DETECTION_INTERRUPT_DISABLE (0x00)
+
+#define MSKSHORT_DETECTION_INTERRUPT_ENABLE (0x01 << 6)
+#define MSKSHORT_DETECTION_INTERRUPT_DISABLE (0x00)
+
+#define SOFTWARE_SLEEP_REG 0x1A
+#define MSKSLEEP_ENABLE 0x02
+#define MSKSLEEP_DISABLE 0x00
+
+// LED Control Registers
+#define LED_CONTROL_ON_OFF_FIRST_ADDR 0x0
+#define LED_CONTROL_ON_OFF_LAST_ADDR 0x17
+#define LED_CONTROL_ON_OFF_LENGTH ((LED_CONTROL_ON_OFF_LAST_ADDR - LED_CONTROL_ON_OFF_FIRST_ADDR) + 1)
+
+#define LED_CONTROL_OPEN_FIRST_ADDR 0x18
+#define LED_CONTROL_OPEN_LAST_ADDR 0x2F
+#define LED_CONTROL_OPEN_LENGTH ((LED_CONTROL_OPEN_LAST_ADDR - LED_CONTROL_OPEN_FIRST_ADDR) + 1)
+
+#define LED_CONTROL_SHORT_FIRST_ADDR 0x30
+#define LED_CONTROL_SHORT_LAST_ADDR 0x47
+#define LED_CONTROL_SHORT_LENGTH ((LED_CONTROL_SHORT_LAST_ADDR - LED_CONTROL_SHORT_FIRST_ADDR) + 1)
+
+#define LED_CONTROL_PAGE_LENGTH 0x48
+
+// LED Control Registers
+#define LED_PWM_FIRST_ADDR 0x00
+#define LED_PWM_LAST_ADDR 0xBF
+#define LED_PWM_LENGTH 0xC0
+
+// Current Tune Registers
+#define LED_CURRENT_TUNE_FIRST_ADDR 0x00
+#define LED_CURRENT_TUNE_LAST_ADDR 0x0B
+#define LED_CURRENT_TUNE_LENGTH 0x0C
+
+#define A_1 0x00
+#define A_2 0x01
+#define A_3 0x02
+#define A_4 0x03
+#define A_5 0x04
+#define A_6 0x05
+#define A_7 0x06
+#define A_8 0x07
+#define A_9 0x08
+#define A_10 0x09
+#define A_11 0x0A
+#define A_12 0x0B
+#define A_13 0x0C
+#define A_14 0x0D
+#define A_15 0x0E
+#define A_16 0x0F
+
+#define B_1 0x10
+#define B_2 0x11
+#define B_3 0x12
+#define B_4 0x13
+#define B_5 0x14
+#define B_6 0x15
+#define B_7 0x16
+#define B_8 0x17
+#define B_9 0x18
+#define B_10 0x19
+#define B_11 0x1A
+#define B_12 0x1B
+#define B_13 0x1C
+#define B_14 0x1D
+#define B_15 0x1E
+#define B_16 0x1F
+
+#define C_1 0x20
+#define C_2 0x21
+#define C_3 0x22
+#define C_4 0x23
+#define C_5 0x24
+#define C_6 0x25
+#define C_7 0x26
+#define C_8 0x27
+#define C_9 0x28
+#define C_10 0x29
+#define C_11 0x2A
+#define C_12 0x2B
+#define C_13 0x2C
+#define C_14 0x2D
+#define C_15 0x2E
+#define C_16 0x2F
+
+#define D_1 0x30
+#define D_2 0x31
+#define D_3 0x32
+#define D_4 0x33
+#define D_5 0x34
+#define D_6 0x35
+#define D_7 0x36
+#define D_8 0x37
+#define D_9 0x38
+#define D_10 0x39
+#define D_11 0x3A
+#define D_12 0x3B
+#define D_13 0x3C
+#define D_14 0x3D
+#define D_15 0x3E
+#define D_16 0x3F
+
+#define E_1 0x40
+#define E_2 0x41
+#define E_3 0x42
+#define E_4 0x43
+#define E_5 0x44
+#define E_6 0x45
+#define E_7 0x46
+#define E_8 0x47
+#define E_9 0x48
+#define E_10 0x49
+#define E_11 0x4A
+#define E_12 0x4B
+#define E_13 0x4C
+#define E_14 0x4D
+#define E_15 0x4E
+#define E_16 0x4F
+
+#define F_1 0x50
+#define F_2 0x51
+#define F_3 0x52
+#define F_4 0x53
+#define F_5 0x54
+#define F_6 0x55
+#define F_7 0x56
+#define F_8 0x57
+#define F_9 0x58
+#define F_10 0x59
+#define F_11 0x5A
+#define F_12 0x5B
+#define F_13 0x5C
+#define F_14 0x5D
+#define F_15 0x5E
+#define F_16 0x5F
+
+#define G_1 0x60
+#define G_2 0x61
+#define G_3 0x62
+#define G_4 0x63
+#define G_5 0x64
+#define G_6 0x65
+#define G_7 0x66
+#define G_8 0x67
+#define G_9 0x68
+#define G_10 0x69
+#define G_11 0x6A
+#define G_12 0x6B
+#define G_13 0x6C
+#define G_14 0x6D
+#define G_15 0x6E
+#define G_16 0x6F
+
+#define H_1 0x70
+#define H_2 0x71
+#define H_3 0x72
+#define H_4 0x73
+#define H_5 0x74
+#define H_6 0x75
+#define H_7 0x76
+#define H_8 0x77
+#define H_9 0x78
+#define H_10 0x79
+#define H_11 0x7A
+#define H_12 0x7B
+#define H_13 0x7C
+#define H_14 0x7D
+#define H_15 0x7E
+#define H_16 0x7F
+
+#define I_1 0x80
+#define I_2 0x81
+#define I_3 0x82
+#define I_4 0x83
+#define I_5 0x84
+#define I_6 0x85
+#define I_7 0x86
+#define I_8 0x87
+#define I_9 0x88
+#define I_10 0x89
+#define I_11 0x8A
+#define I_12 0x8B
+#define I_13 0x8C
+#define I_14 0x8D
+#define I_15 0x8E
+#define I_16 0x8F
+
+#define J_1 0x90
+#define J_2 0x91
+#define J_3 0x92
+#define J_4 0x93
+#define J_5 0x94
+#define J_6 0x95
+#define J_7 0x96
+#define J_8 0x97
+#define J_9 0x98
+#define J_10 0x99
+#define J_11 0x9A
+#define J_12 0x9B
+#define J_13 0x9C
+#define J_14 0x9D
+#define J_15 0x9E
+#define J_16 0x9F
+
+#define K_1 0xA0
+#define K_2 0xA1
+#define K_3 0xA2
+#define K_4 0xA3
+#define K_5 0xA4
+#define K_6 0xA5
+#define K_7 0xA6
+#define K_8 0xA7
+#define K_9 0xA8
+#define K_10 0xA9
+#define K_11 0xAA
+#define K_12 0xAB
+#define K_13 0xAC
+#define K_14 0xAD
+#define K_15 0xAE
+#define K_16 0xAF
+
+#define L_1 0xB0
+#define L_2 0xB1
+#define L_3 0xB2
+#define L_4 0xB3
+#define L_5 0xB4
+#define L_6 0xB5
+#define L_7 0xB6
+#define L_8 0xB7
+#define L_9 0xB8
+#define L_10 0xB9
+#define L_11 0xBA
+#define L_12 0xBB
+#define L_13 0xBC
+#define L_14 0xBD
+#define L_15 0xBE
+#define L_16 0xBF
\ No newline at end of file
diff --git a/drivers/led/issi/is31fl3731-simple.c b/drivers/led/issi/is31fl3731-simple.c
index d295772f5e9..f51e2e38aff 100644
--- a/drivers/led/issi/is31fl3731-simple.c
+++ b/drivers/led/issi/is31fl3731-simple.c
@@ -1,6 +1,7 @@
/* Copyright 2017 Jason Williams
* Copyright 2018 Jack Humbert
* Copyright 2019 Clueboard
+ * Copyright 2021 Doni Crosby
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -40,6 +41,9 @@
#define ISSI_REG_PICTUREFRAME 0x01
+// Not defined in the datasheet -- See AN for IC
+#define ISSI_REG_GHOST_IMAGE_PREVENTION 0xC2 // Set bit 4 to enable de-ghosting
+
#define ISSI_REG_SHUTDOWN 0x0A
#define ISSI_REG_AUDIOSYNC 0x06
@@ -144,6 +148,9 @@ void IS31FL3731_init(uint8_t addr) {
// enable software shutdown
IS31FL3731_write_register(addr, ISSI_REG_SHUTDOWN, 0x00);
+#ifdef ISSI_3731_DEGHOST // set to enable de-ghosting of the array
+ IS31FL3731_write_register(addr, ISSI_REG_GHOST_IMAGE_PREVENTION, 0x10);
+#endif
// this delay was copied from other drivers, might not be needed
wait_ms(10);
@@ -186,8 +193,9 @@ void IS31FL3731_init(uint8_t addr) {
}
void IS31FL3731_set_value(int index, uint8_t value) {
+ is31_led led;
if (index >= 0 && index < DRIVER_LED_TOTAL) {
- is31_led led = g_is31_leds[index];
+ memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
// Subtract 0x24 to get the second index of g_pwm_buffer
g_pwm_buffer[led.driver][led.v - 0x24] = value;
@@ -202,7 +210,8 @@ void IS31FL3731_set_value_all(uint8_t value) {
}
void IS31FL3731_set_led_control_register(uint8_t index, bool value) {
- is31_led led = g_is31_leds[index];
+ is31_led led;
+ memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
uint8_t control_register = (led.v - 0x24) / 8;
uint8_t bit_value = (led.v - 0x24) % 8;
diff --git a/drivers/led/issi/is31fl3731-simple.h b/drivers/led/issi/is31fl3731-simple.h
index ecde31eed5e..ded94b0470d 100644
--- a/drivers/led/issi/is31fl3731-simple.h
+++ b/drivers/led/issi/is31fl3731-simple.h
@@ -27,7 +27,7 @@ typedef struct is31_led {
uint8_t v;
} __attribute__((packed)) is31_led;
-extern const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL];
+extern const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL];
void IS31FL3731_init(uint8_t addr);
void IS31FL3731_write_register(uint8_t addr, uint8_t reg, uint8_t data);
diff --git a/drivers/led/issi/is31fl3731.c b/drivers/led/issi/is31fl3731.c
index 110bdc1be4d..e6190a6b908 100644
--- a/drivers/led/issi/is31fl3731.c
+++ b/drivers/led/issi/is31fl3731.c
@@ -1,5 +1,6 @@
/* Copyright 2017 Jason Williams
* Copyright 2018 Jack Humbert
+ * Copyright 2021 Doni Crosby
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -39,6 +40,9 @@
#define ISSI_REG_PICTUREFRAME 0x01
+// Not defined in the datasheet -- See AN for IC
+#define ISSI_REG_GHOST_IMAGE_PREVENTION 0xC2 // Set bit 4 to enable de-ghosting
+
#define ISSI_REG_SHUTDOWN 0x0A
#define ISSI_REG_AUDIOSYNC 0x06
@@ -132,6 +136,9 @@ void IS31FL3731_init(uint8_t addr) {
// enable software shutdown
IS31FL3731_write_register(addr, ISSI_REG_SHUTDOWN, 0x00);
+#ifdef ISSI_3731_DEGHOST // set to enable de-ghosting of the array
+ IS31FL3731_write_register(addr, ISSI_REG_GHOST_IMAGE_PREVENTION, 0x10);
+#endif
// this delay was copied from other drivers, might not be needed
wait_ms(10);
@@ -174,8 +181,9 @@ void IS31FL3731_init(uint8_t addr) {
}
void IS31FL3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ is31_led led;
if (index >= 0 && index < DRIVER_LED_TOTAL) {
- is31_led led = g_is31_leds[index];
+ memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
// Subtract 0x24 to get the second index of g_pwm_buffer
g_pwm_buffer[led.driver][led.r - 0x24] = red;
@@ -192,7 +200,8 @@ void IS31FL3731_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
}
void IS31FL3731_set_led_control_register(uint8_t index, bool red, bool green, bool blue) {
- is31_led led = g_is31_leds[index];
+ is31_led led;
+ memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
uint8_t control_register_r = (led.r - 0x24) / 8;
uint8_t control_register_g = (led.g - 0x24) / 8;
diff --git a/drivers/led/issi/is31fl3731.h b/drivers/led/issi/is31fl3731.h
index 803ea3ea12f..6647119ebae 100644
--- a/drivers/led/issi/is31fl3731.h
+++ b/drivers/led/issi/is31fl3731.h
@@ -28,7 +28,7 @@ typedef struct is31_led {
uint8_t b;
} __attribute__((packed)) is31_led;
-extern const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL];
+extern const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL];
void IS31FL3731_init(uint8_t addr);
void IS31FL3731_write_register(uint8_t addr, uint8_t reg, uint8_t data);
diff --git a/drivers/led/issi/is31fl3733.c b/drivers/led/issi/is31fl3733.c
index d99e5339c91..696491d0706 100644
--- a/drivers/led/issi/is31fl3733.c
+++ b/drivers/led/issi/is31fl3733.c
@@ -1,6 +1,7 @@
/* Copyright 2017 Jason Williams
* Copyright 2018 Jack Humbert
* Copyright 2018 Yiancar
+ * Copyright 2021 Doni Crosby
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -56,6 +57,18 @@
# define ISSI_PERSISTENCE 0
#endif
+#ifndef ISSI_PWM_FREQUENCY
+# define ISSI_PWM_FREQUENCY 0b000 // PFS - IS31FL3733B only
+#endif
+
+#ifndef ISSI_SWPULLUP
+# define ISSI_SWPULLUP PUR_0R
+#endif
+
+#ifndef ISSI_CSPULLUP
+# define ISSI_CSPULLUP PUR_0R
+#endif
+
// Transfer buffer for TWITransmitData()
uint8_t g_twi_transfer_buffer[20];
@@ -154,18 +167,23 @@ void IS31FL3733_init(uint8_t addr, uint8_t sync) {
// Select PG3
IS31FL3733_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_FUNCTION);
+ // Set de-ghost pull-up resistors (SWx)
+ IS31FL3733_write_register(addr, ISSI_REG_SWPULLUP, ISSI_SWPULLUP);
+ // Set de-ghost pull-down resistors (CSx)
+ IS31FL3733_write_register(addr, ISSI_REG_CSPULLUP, ISSI_CSPULLUP);
// Set global current to maximum.
IS31FL3733_write_register(addr, ISSI_REG_GLOBALCURRENT, 0xFF);
// Disable software shutdown.
- IS31FL3733_write_register(addr, ISSI_REG_CONFIGURATION, (sync << 6) | 0x01);
+ IS31FL3733_write_register(addr, ISSI_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((ISSI_PWM_FREQUENCY & 0b111) << 3) | 0x01);
// Wait 10ms to ensure the device has woken up.
wait_ms(10);
}
void IS31FL3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ is31_led led;
if (index >= 0 && index < DRIVER_LED_TOTAL) {
- is31_led led = g_is31_leds[index];
+ memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
@@ -181,7 +199,8 @@ void IS31FL3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
}
void IS31FL3733_set_led_control_register(uint8_t index, bool red, bool green, bool blue) {
- is31_led led = g_is31_leds[index];
+ is31_led led;
+ memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
uint8_t control_register_r = led.r / 8;
uint8_t control_register_g = led.g / 8;
diff --git a/drivers/led/issi/is31fl3733.h b/drivers/led/issi/is31fl3733.h
index 64fd38eb191..c5d62fed851 100644
--- a/drivers/led/issi/is31fl3733.h
+++ b/drivers/led/issi/is31fl3733.h
@@ -1,6 +1,7 @@
/* Copyright 2017 Jason Williams
* Copyright 2018 Jack Humbert
* Copyright 2018 Yiancar
+ * Copyright 2021 Doni Crosby
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -29,7 +30,7 @@ typedef struct is31_led {
uint8_t b;
} __attribute__((packed)) is31_led;
-extern const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL];
+extern const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL];
void IS31FL3733_init(uint8_t addr, uint8_t sync);
bool IS31FL3733_write_register(uint8_t addr, uint8_t reg, uint8_t data);
@@ -47,6 +48,14 @@ void IS31FL3733_set_led_control_register(uint8_t index, bool red, bool green, bo
void IS31FL3733_update_pwm_buffers(uint8_t addr, uint8_t index);
void IS31FL3733_update_led_control_registers(uint8_t addr, uint8_t index);
+#define PUR_0R 0x00 // No PUR resistor
+#define PUR_05KR 0x02 // 0.5k Ohm resistor in t_NOL
+#define PUR_3KR 0x03 // 3.0k Ohm resistor on all the time
+#define PUR_4KR 0x04 // 4.0k Ohm resistor on all the time
+#define PUR_8KR 0x05 // 8.0k Ohm resistor on all the time
+#define PUR_16KR 0x06 // 16k Ohm resistor on all the time
+#define PUR_32KR 0x07 // 32k Ohm resistor in t_NOL
+
#define A_1 0x00
#define A_2 0x01
#define A_3 0x02
diff --git a/drivers/led/issi/is31fl3736.c b/drivers/led/issi/is31fl3736.c
index 7dece1b1eb5..c9a871118d2 100644
--- a/drivers/led/issi/is31fl3736.c
+++ b/drivers/led/issi/is31fl3736.c
@@ -1,4 +1,5 @@
/* Copyright 2018 Jason Williams (Wilba)
+ * Copyright 2021 Doni Crosby
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -54,6 +55,14 @@
# define ISSI_PERSISTENCE 0
#endif
+#ifndef ISSI_SWPULLUP
+# define ISSI_SWPULLUP PUR_0R
+#endif
+
+#ifndef ISSI_CSPULLUP
+# define ISSI_CSPULLUP PUR_0R
+#endif
+
// Transfer buffer for TWITransmitData()
uint8_t g_twi_transfer_buffer[20];
@@ -140,6 +149,10 @@ void IS31FL3736_init(uint8_t addr) {
// Select PG3
IS31FL3736_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_FUNCTION);
+ // Set de-ghost pull-up resistors (SWx)
+ IS31FL3736_write_register(addr, ISSI_REG_SWPULLUP, ISSI_SWPULLUP);
+ // Set de-ghost pull-down resistors (CSx)
+ IS31FL3736_write_register(addr, ISSI_REG_CSPULLUP, ISSI_CSPULLUP);
// Set global current to maximum.
IS31FL3736_write_register(addr, ISSI_REG_GLOBALCURRENT, 0xFF);
// Disable software shutdown.
@@ -150,8 +163,9 @@ void IS31FL3736_init(uint8_t addr) {
}
void IS31FL3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ is31_led led;
if (index >= 0 && index < DRIVER_LED_TOTAL) {
- is31_led led = g_is31_leds[index];
+ memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
@@ -167,7 +181,8 @@ void IS31FL3736_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
}
void IS31FL3736_set_led_control_register(uint8_t index, bool red, bool green, bool blue) {
- is31_led led = g_is31_leds[index];
+ is31_led led;
+ memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
// IS31FL3733
// The PWM register for a matrix position (0x00 to 0xBF) can be
diff --git a/drivers/led/issi/is31fl3736.h b/drivers/led/issi/is31fl3736.h
index c956c87f7c1..9fbe1cc577c 100644
--- a/drivers/led/issi/is31fl3736.h
+++ b/drivers/led/issi/is31fl3736.h
@@ -1,4 +1,5 @@
/* Copyright 2018 Jason Williams (Wilba)
+ * Copyright 2021 Doni Crosby
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -38,7 +39,7 @@ typedef struct is31_led {
uint8_t b;
} __attribute__((packed)) is31_led;
-extern const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL];
+extern const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL];
void IS31FL3736_init(uint8_t addr);
void IS31FL3736_write_register(uint8_t addr, uint8_t reg, uint8_t data);
@@ -60,6 +61,15 @@ void IS31FL3736_mono_set_led_control_register(uint8_t index, bool enabled);
void IS31FL3736_update_pwm_buffers(uint8_t addr1, uint8_t addr2);
void IS31FL3736_update_led_control_registers(uint8_t addr1, uint8_t addr2);
+#define PUR_0R 0x00 // No PUR resistor
+#define PUR_05KR 0x01 // 0.5k Ohm resistor
+#define PUR_1KR 0x02 // 1.0k Ohm resistor
+#define PUR_2KR 0x03 // 2.0k Ohm resistor
+#define PUR_4KR 0x04 // 4.0k Ohm resistor
+#define PUR_8KR 0x05 // 8.0k Ohm resistor
+#define PUR_16KR 0x06 // 16k Ohm resistor
+#define PUR_32KR 0x07 // 32k Ohm resistor
+
#define A_1 0x00
#define A_2 0x02
#define A_3 0x04
diff --git a/drivers/led/issi/is31fl3737.c b/drivers/led/issi/is31fl3737.c
index 0bb4ddd4252..0722e18869f 100644
--- a/drivers/led/issi/is31fl3737.c
+++ b/drivers/led/issi/is31fl3737.c
@@ -1,6 +1,7 @@
/* Copyright 2017 Jason Williams
* Copyright 2018 Jack Humbert
* Copyright 2018 Yiancar
+ * Copyright 2021 Doni Crosby
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -56,6 +57,14 @@
# define ISSI_PERSISTENCE 0
#endif
+#ifndef ISSI_SWPULLUP
+# define ISSI_SWPULLUP PUR_0R
+#endif
+
+#ifndef ISSI_CSPULLUP
+# define ISSI_CSPULLUP PUR_0R
+#endif
+
// Transfer buffer for TWITransmitData()
uint8_t g_twi_transfer_buffer[20];
@@ -143,6 +152,10 @@ void IS31FL3737_init(uint8_t addr) {
// Select PG3
IS31FL3737_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_FUNCTION);
+ // Set de-ghost pull-up resistors (SWx)
+ IS31FL3737_write_register(addr, ISSI_REG_SWPULLUP, ISSI_SWPULLUP);
+ // Set de-ghost pull-down resistors (CSx)
+ IS31FL3737_write_register(addr, ISSI_REG_CSPULLUP, ISSI_CSPULLUP);
// Set global current to maximum.
IS31FL3737_write_register(addr, ISSI_REG_GLOBALCURRENT, 0xFF);
// Disable software shutdown.
@@ -153,8 +166,9 @@ void IS31FL3737_init(uint8_t addr) {
}
void IS31FL3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ is31_led led;
if (index >= 0 && index < DRIVER_LED_TOTAL) {
- is31_led led = g_is31_leds[index];
+ memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
@@ -170,7 +184,8 @@ void IS31FL3737_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
}
void IS31FL3737_set_led_control_register(uint8_t index, bool red, bool green, bool blue) {
- is31_led led = g_is31_leds[index];
+ is31_led led;
+ memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
uint8_t control_register_r = led.r / 8;
uint8_t control_register_g = led.g / 8;
diff --git a/drivers/led/issi/is31fl3737.h b/drivers/led/issi/is31fl3737.h
index 06886e9c9b0..31b1a222677 100644
--- a/drivers/led/issi/is31fl3737.h
+++ b/drivers/led/issi/is31fl3737.h
@@ -1,6 +1,7 @@
/* Copyright 2017 Jason Williams
* Copyright 2018 Jack Humbert
* Copyright 2018 Yiancar
+ * Copyright 2021 Doni Crosby
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -29,7 +30,7 @@ typedef struct is31_led {
uint8_t b;
} __attribute__((packed)) is31_led;
-extern const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL];
+extern const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL];
void IS31FL3737_init(uint8_t addr);
void IS31FL3737_write_register(uint8_t addr, uint8_t reg, uint8_t data);
@@ -47,6 +48,15 @@ void IS31FL3737_set_led_control_register(uint8_t index, bool red, bool green, bo
void IS31FL3737_update_pwm_buffers(uint8_t addr1, uint8_t addr2);
void IS31FL3737_update_led_control_registers(uint8_t addr1, uint8_t addr2);
+#define PUR_0R 0x00 // No PUR resistor
+#define PUR_05KR 0x01 // 0.5k Ohm resistor in t_NOL
+#define PUR_1KR 0x02 // 1.0k Ohm resistor in t_NOL
+#define PUR_2KR 0x03 // 2.0k Ohm resistor in t_NOL
+#define PUR_4KR 0x04 // 4.0k Ohm resistor in t_NOL
+#define PUR_8KR 0x05 // 8.0k Ohm resistor in t_NOL
+#define PUR_16KR 0x06 // 16k Ohm resistor in t_NOL
+#define PUR_32KR 0x07 // 32k Ohm resistor in t_NOL
+
#define A_1 0x00
#define A_2 0x01
#define A_3 0x02
diff --git a/drivers/led/issi/is31fl3741.c b/drivers/led/issi/is31fl3741.c
index 24a273514ed..8d347a5e607 100644
--- a/drivers/led/issi/is31fl3741.c
+++ b/drivers/led/issi/is31fl3741.c
@@ -61,6 +61,14 @@
# define ISSI_PERSISTENCE 0
#endif
+#ifndef ISSI_SWPULLUP
+# define ISSI_SWPULLUP PUR_32KR
+#endif
+
+#ifndef ISSI_CSPULLUP
+# define ISSI_CSPULLUP PUR_32KR
+#endif
+
#define ISSI_MAX_LEDS 351
// Transfer buffer for TWITransmitData()
@@ -157,7 +165,7 @@ void IS31FL3741_init(uint8_t addr) {
// Set Golbal Current Control Register
IS31FL3741_write_register(addr, ISSI_REG_GLOBALCURRENT, 0xFF);
// Set Pull up & Down for SWx CSy
- IS31FL3741_write_register(addr, ISSI_REG_PULLDOWNUP, 0x77);
+ IS31FL3741_write_register(addr, ISSI_REG_PULLDOWNUP, ((ISSI_CSPULLUP << 4) | ISSI_SWPULLUP));
// IS31FL3741_update_led_scaling_registers(addr, 0xFF, 0xFF, 0xFF);
@@ -166,8 +174,9 @@ void IS31FL3741_init(uint8_t addr) {
}
void IS31FL3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ is31_led led;
if (index >= 0 && index < DRIVER_LED_TOTAL) {
- is31_led led = g_is31_leds[index];
+ memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
@@ -183,7 +192,8 @@ void IS31FL3741_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
}
void IS31FL3741_set_led_control_register(uint8_t index, bool red, bool green, bool blue) {
- is31_led led = g_is31_leds[index];
+ is31_led led;
+ memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
if (red) {
g_scaling_registers[led.driver][led.r] = 0xFF;
diff --git a/drivers/led/issi/is31fl3741.h b/drivers/led/issi/is31fl3741.h
index 163a0352338..8154f8be702 100644
--- a/drivers/led/issi/is31fl3741.h
+++ b/drivers/led/issi/is31fl3741.h
@@ -30,7 +30,7 @@ typedef struct is31_led {
uint32_t b : 10;
} __attribute__((packed)) is31_led;
-extern const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL];
+extern const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL];
void IS31FL3741_init(uint8_t addr);
void IS31FL3741_write_register(uint8_t addr, uint8_t reg, uint8_t data);
@@ -51,6 +51,15 @@ void IS31FL3741_set_scaling_registers(const is31_led *pled, uint8_t red, uint8_t
void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue);
+#define PUR_0R 0x00 // No PUR resistor
+#define PUR_05KR 0x01 // 0.5k Ohm resistor
+#define PUR_1KR 0x02 // 1.0k Ohm resistor
+#define PUR_2KR 0x03 // 2.0k Ohm resistor
+#define PUR_4KR 0x04 // 4.0k Ohm resistor
+#define PUR_8KR 0x05 // 8.0k Ohm resistor
+#define PUR_16KR 0x06 // 16k Ohm resistor
+#define PUR_32KR 0x07 // 32k Ohm resistor
+
#define CS1_SW1 0x00
#define CS2_SW1 0x01
#define CS3_SW1 0x02
diff --git a/drivers/oled/oled_driver.h b/drivers/oled/oled_driver.h
index 13b73ede9d0..3b56d370dc7 100644
--- a/drivers/oled/oled_driver.h
+++ b/drivers/oled/oled_driver.h
@@ -190,6 +190,7 @@ bool oled_init(oled_rotation_t rotation);
// Called at the start of oled_init, weak function overridable by the user
// rotation - the value passed into oled_init
// Return new oled_rotation_t if you want to override default rotation
+oled_rotation_t oled_init_kb(oled_rotation_t rotation);
oled_rotation_t oled_init_user(oled_rotation_t rotation);
// Clears the display buffer, resets cursor position to 0, and sets the buffer to dirty for rendering
@@ -285,7 +286,8 @@ uint8_t oled_get_brightness(void);
void oled_task(void);
// Called at the start of oled_task, weak function overridable by the user
-void oled_task_user(void);
+bool oled_task_kb(void);
+bool oled_task_user(void);
// Set the specific 8 lines rows of the screen to scroll.
// 0 is the default for start, and 7 for end, which is the entire
diff --git a/drivers/oled/ssd1306_sh1106.c b/drivers/oled/ssd1306_sh1106.c
index e9049438f52..d9bd3c14bd7 100644
--- a/drivers/oled/ssd1306_sh1106.c
+++ b/drivers/oled/ssd1306_sh1106.c
@@ -167,7 +167,7 @@ bool oled_init(oled_rotation_t rotation) {
}
#endif
- oled_rotation = oled_init_user(rotation);
+ oled_rotation = oled_init_user(oled_init_kb(rotation));
if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) {
oled_rotation_width = OLED_DISPLAY_WIDTH;
} else {
@@ -232,6 +232,7 @@ bool oled_init(oled_rotation_t rotation) {
return true;
}
+__attribute__((weak)) oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return rotation; }
__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; }
void oled_clear(void) {
@@ -741,11 +742,11 @@ void oled_task(void) {
if (timer_elapsed(oled_update_timeout) >= OLED_UPDATE_INTERVAL) {
oled_update_timeout = timer_read();
oled_set_cursor(0, 0);
- oled_task_user();
+ oled_task_kb();
}
#else
oled_set_cursor(0, 0);
- oled_task_user();
+ oled_task_kb();
#endif
#if OLED_SCROLL_TIMEOUT > 0
@@ -776,4 +777,5 @@ void oled_task(void) {
#endif
}
-__attribute__((weak)) void oled_task_user(void) {}
+__attribute__((weak)) bool oled_task_kb(void) { return oled_task_user(); }
+__attribute__((weak)) bool oled_task_user(void) { return true; }
diff --git a/tmk_core/protocol/ps2.h b/drivers/ps2/ps2.h
similarity index 100%
rename from tmk_core/protocol/ps2.h
rename to drivers/ps2/ps2.h
diff --git a/tmk_core/protocol/ps2_busywait.c b/drivers/ps2/ps2_busywait.c
similarity index 100%
rename from tmk_core/protocol/ps2_busywait.c
rename to drivers/ps2/ps2_busywait.c
diff --git a/drivers/ps2/ps2_interrupt.c b/drivers/ps2/ps2_interrupt.c
new file mode 100644
index 00000000000..70debd02f7f
--- /dev/null
+++ b/drivers/ps2/ps2_interrupt.c
@@ -0,0 +1,340 @@
+/*
+Copyright 2010,2011,2012,2013 Jun WAKO
+
+This software is licensed with a Modified BSD License.
+All of this is supposed to be Free Software, Open Source, DFSG-free,
+GPL-compatible, and OK to use in both free and proprietary applications.
+Additions and corrections to this file are welcome.
+
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+* Neither the name of the copyright holders nor the names of
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * PS/2 protocol Pin interrupt version
+ */
+
+#include
+
+#if defined(__AVR__)
+# include
+#elif defined(PROTOCOL_CHIBIOS) // TODO: or STM32 ?
+// chibiOS headers
+# include "ch.h"
+# include "hal.h"
+#endif
+
+#include "ps2.h"
+#include "ps2_io.h"
+#include "print.h"
+#include "wait.h"
+
+#define WAIT(stat, us, err) \
+ do { \
+ if (!wait_##stat(us)) { \
+ ps2_error = err; \
+ goto ERROR; \
+ } \
+ } while (0)
+
+uint8_t ps2_error = PS2_ERR_NONE;
+
+static inline uint8_t pbuf_dequeue(void);
+static inline void pbuf_enqueue(uint8_t data);
+static inline bool pbuf_has_data(void);
+static inline void pbuf_clear(void);
+
+#if defined(PROTOCOL_CHIBIOS)
+void ps2_interrupt_service_routine(void);
+void palCallback(void *arg) { ps2_interrupt_service_routine(); }
+
+# define PS2_INT_INIT() \
+ { palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_INPUT); } \
+ while (0)
+# define PS2_INT_ON() \
+ { \
+ palEnableLineEvent(PS2_CLOCK_PIN, PAL_EVENT_MODE_FALLING_EDGE); \
+ palSetLineCallback(PS2_CLOCK_PIN, palCallback, NULL); \
+ } \
+ while (0)
+# define PS2_INT_OFF() \
+ { palDisableLineEvent(PS2_CLOCK_PIN); } \
+ while (0)
+#endif // PROTOCOL_CHIBIOS
+
+void ps2_host_init(void) {
+ idle();
+ PS2_INT_INIT();
+ PS2_INT_ON();
+ // POR(150-2000ms) plus BAT(300-500ms) may take 2.5sec([3]p.20)
+ // wait_ms(2500);
+}
+
+uint8_t ps2_host_send(uint8_t data) {
+ bool parity = true;
+ ps2_error = PS2_ERR_NONE;
+
+ PS2_INT_OFF();
+
+ /* terminate a transmission if we have */
+ inhibit();
+ wait_us(100); // 100us [4]p.13, [5]p.50
+
+ /* 'Request to Send' and Start bit */
+ data_lo();
+ clock_hi();
+ WAIT(clock_lo, 10000, 10); // 10ms [5]p.50
+
+ /* Data bit[2-9] */
+ for (uint8_t i = 0; i < 8; i++) {
+ if (data & (1 << i)) {
+ parity = !parity;
+ data_hi();
+ } else {
+ data_lo();
+ }
+ WAIT(clock_hi, 50, 2);
+ WAIT(clock_lo, 50, 3);
+ }
+
+ /* Parity bit */
+ wait_us(15);
+ if (parity) {
+ data_hi();
+ } else {
+ data_lo();
+ }
+ WAIT(clock_hi, 50, 4);
+ WAIT(clock_lo, 50, 5);
+
+ /* Stop bit */
+ wait_us(15);
+ data_hi();
+
+ /* Ack */
+ WAIT(data_lo, 50, 6);
+ WAIT(clock_lo, 50, 7);
+
+ /* wait for idle state */
+ WAIT(clock_hi, 50, 8);
+ WAIT(data_hi, 50, 9);
+
+ idle();
+ PS2_INT_ON();
+ return ps2_host_recv_response();
+ERROR:
+ idle();
+ PS2_INT_ON();
+ return 0;
+}
+
+uint8_t ps2_host_recv_response(void) {
+ // Command may take 25ms/20ms at most([5]p.46, [3]p.21)
+ uint8_t retry = 25;
+ while (retry-- && !pbuf_has_data()) {
+ wait_ms(1);
+ }
+ return pbuf_dequeue();
+}
+
+/* get data received by interrupt */
+uint8_t ps2_host_recv(void) {
+ if (pbuf_has_data()) {
+ ps2_error = PS2_ERR_NONE;
+ return pbuf_dequeue();
+ } else {
+ ps2_error = PS2_ERR_NODATA;
+ return 0;
+ }
+}
+
+void ps2_interrupt_service_routine(void) {
+ static enum {
+ INIT,
+ START,
+ BIT0,
+ BIT1,
+ BIT2,
+ BIT3,
+ BIT4,
+ BIT5,
+ BIT6,
+ BIT7,
+ PARITY,
+ STOP,
+ } state = INIT;
+ static uint8_t data = 0;
+ static uint8_t parity = 1;
+
+ // TODO: abort if elapse 100us from previous interrupt
+
+ // return unless falling edge
+ if (clock_in()) {
+ goto RETURN;
+ }
+
+ state++;
+ switch (state) {
+ case START:
+ if (data_in()) goto ERROR;
+ break;
+ case BIT0:
+ case BIT1:
+ case BIT2:
+ case BIT3:
+ case BIT4:
+ case BIT5:
+ case BIT6:
+ case BIT7:
+ data >>= 1;
+ if (data_in()) {
+ data |= 0x80;
+ parity++;
+ }
+ break;
+ case PARITY:
+ if (data_in()) {
+ if (!(parity & 0x01)) goto ERROR;
+ } else {
+ if (parity & 0x01) goto ERROR;
+ }
+ break;
+ case STOP:
+ if (!data_in()) goto ERROR;
+ pbuf_enqueue(data);
+ goto DONE;
+ break;
+ default:
+ goto ERROR;
+ }
+ goto RETURN;
+ERROR:
+ ps2_error = state;
+DONE:
+ state = INIT;
+ data = 0;
+ parity = 1;
+RETURN:
+ return;
+}
+
+#if defined(__AVR__)
+ISR(PS2_INT_VECT) { ps2_interrupt_service_routine(); }
+#endif
+
+/* send LED state to keyboard */
+void ps2_host_set_led(uint8_t led) {
+ ps2_host_send(0xED);
+ ps2_host_send(led);
+}
+
+/*--------------------------------------------------------------------
+ * Ring buffer to store scan codes from keyboard
+ *------------------------------------------------------------------*/
+#define PBUF_SIZE 32
+static uint8_t pbuf[PBUF_SIZE];
+static uint8_t pbuf_head = 0;
+static uint8_t pbuf_tail = 0;
+static inline void pbuf_enqueue(uint8_t data) {
+#if defined(__AVR__)
+ uint8_t sreg = SREG;
+ cli();
+#elif defined(PROTOCOL_CHIBIOS)
+ chSysLockFromISR();
+#endif
+
+ uint8_t next = (pbuf_head + 1) % PBUF_SIZE;
+ if (next != pbuf_tail) {
+ pbuf[pbuf_head] = data;
+ pbuf_head = next;
+ } else {
+ print("pbuf: full\n");
+ }
+
+#if defined(__AVR__)
+ SREG = sreg;
+#elif defined(PROTOCOL_CHIBIOS)
+ chSysUnlockFromISR();
+#endif
+}
+static inline uint8_t pbuf_dequeue(void) {
+ uint8_t val = 0;
+
+#if defined(__AVR__)
+ uint8_t sreg = SREG;
+ cli();
+#elif defined(PROTOCOL_CHIBIOS)
+ chSysLock();
+#endif
+
+ if (pbuf_head != pbuf_tail) {
+ val = pbuf[pbuf_tail];
+ pbuf_tail = (pbuf_tail + 1) % PBUF_SIZE;
+ }
+
+#if defined(__AVR__)
+ SREG = sreg;
+#elif defined(PROTOCOL_CHIBIOS)
+ chSysUnlock();
+#endif
+
+ return val;
+}
+static inline bool pbuf_has_data(void) {
+#if defined(__AVR__)
+ uint8_t sreg = SREG;
+ cli();
+#elif defined(PROTOCOL_CHIBIOS)
+ chSysLock();
+#endif
+
+ bool has_data = (pbuf_head != pbuf_tail);
+
+#if defined(__AVR__)
+ SREG = sreg;
+#elif defined(PROTOCOL_CHIBIOS)
+ chSysUnlock();
+#endif
+ return has_data;
+}
+static inline void pbuf_clear(void) {
+#if defined(__AVR__)
+ uint8_t sreg = SREG;
+ cli();
+#elif defined(PROTOCOL_CHIBIOS)
+ chSysLock();
+#endif
+
+ pbuf_head = pbuf_tail = 0;
+
+#if defined(__AVR__)
+ SREG = sreg;
+#elif defined(PROTOCOL_CHIBIOS)
+ chSysUnlock();
+#endif
+}
diff --git a/tmk_core/protocol/ps2_io.h b/drivers/ps2/ps2_io.h
similarity index 100%
rename from tmk_core/protocol/ps2_io.h
rename to drivers/ps2/ps2_io.h
diff --git a/drivers/ps2/ps2_mouse.c b/drivers/ps2/ps2_mouse.c
new file mode 100644
index 00000000000..8a6668b4106
--- /dev/null
+++ b/drivers/ps2/ps2_mouse.c
@@ -0,0 +1,270 @@
+/*
+Copyright 2011,2013 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 .
+*/
+
+#include
+#include "ps2_mouse.h"
+#include "wait.h"
+#include "gpio.h"
+#include "host.h"
+#include "timer.h"
+#include "print.h"
+#include "report.h"
+#include "debug.h"
+#include "ps2.h"
+
+/* ============================= MACROS ============================ */
+
+static report_mouse_t mouse_report = {};
+
+static inline void ps2_mouse_print_report(report_mouse_t *mouse_report);
+static inline void ps2_mouse_convert_report_to_hid(report_mouse_t *mouse_report);
+static inline void ps2_mouse_clear_report(report_mouse_t *mouse_report);
+static inline void ps2_mouse_enable_scrolling(void);
+static inline void ps2_mouse_scroll_button_task(report_mouse_t *mouse_report);
+
+/* ============================= IMPLEMENTATION ============================ */
+
+/* supports only 3 button mouse at this time */
+void ps2_mouse_init(void) {
+ ps2_host_init();
+
+ wait_ms(PS2_MOUSE_INIT_DELAY); // wait for powering up
+
+ PS2_MOUSE_SEND(PS2_MOUSE_RESET, "ps2_mouse_init: sending reset");
+
+ PS2_MOUSE_RECEIVE("ps2_mouse_init: read BAT");
+ PS2_MOUSE_RECEIVE("ps2_mouse_init: read DevID");
+
+#ifdef PS2_MOUSE_USE_REMOTE_MODE
+ ps2_mouse_set_remote_mode();
+#else
+ ps2_mouse_enable_data_reporting();
+#endif
+
+#ifdef PS2_MOUSE_ENABLE_SCROLLING
+ ps2_mouse_enable_scrolling();
+#endif
+
+#ifdef PS2_MOUSE_USE_2_1_SCALING
+ ps2_mouse_set_scaling_2_1();
+#endif
+
+ ps2_mouse_init_user();
+}
+
+__attribute__((weak)) void ps2_mouse_init_user(void) {}
+
+__attribute__((weak)) void ps2_mouse_moved_user(report_mouse_t *mouse_report) {}
+
+void ps2_mouse_task(void) {
+ static uint8_t buttons_prev = 0;
+ extern int tp_buttons;
+
+ /* receives packet from mouse */
+ uint8_t rcv;
+ rcv = ps2_host_send(PS2_MOUSE_READ_DATA);
+ if (rcv == PS2_ACK) {
+ mouse_report.buttons = ps2_host_recv_response() | tp_buttons;
+ mouse_report.x = ps2_host_recv_response() * PS2_MOUSE_X_MULTIPLIER;
+ mouse_report.y = ps2_host_recv_response() * PS2_MOUSE_Y_MULTIPLIER;
+#ifdef PS2_MOUSE_ENABLE_SCROLLING
+ mouse_report.v = -(ps2_host_recv_response() & PS2_MOUSE_SCROLL_MASK) * PS2_MOUSE_V_MULTIPLIER;
+#endif
+ } else {
+ if (debug_mouse) print("ps2_mouse: fail to get mouse packet\n");
+ return;
+ }
+
+ /* if mouse moves or buttons state changes */
+ if (mouse_report.x || mouse_report.y || mouse_report.v || ((mouse_report.buttons ^ buttons_prev) & PS2_MOUSE_BTN_MASK)) {
+#ifdef PS2_MOUSE_DEBUG_RAW
+ // Used to debug raw ps2 bytes from mouse
+ ps2_mouse_print_report(&mouse_report);
+#endif
+ buttons_prev = mouse_report.buttons;
+ ps2_mouse_convert_report_to_hid(&mouse_report);
+#if PS2_MOUSE_SCROLL_BTN_MASK
+ ps2_mouse_scroll_button_task(&mouse_report);
+#endif
+ if (mouse_report.x || mouse_report.y || mouse_report.v) {
+ ps2_mouse_moved_user(&mouse_report);
+ }
+#ifdef PS2_MOUSE_DEBUG_HID
+ // Used to debug the bytes sent to the host
+ ps2_mouse_print_report(&mouse_report);
+#endif
+ host_mouse_send(&mouse_report);
+ }
+
+ ps2_mouse_clear_report(&mouse_report);
+}
+
+void ps2_mouse_disable_data_reporting(void) { PS2_MOUSE_SEND(PS2_MOUSE_DISABLE_DATA_REPORTING, "ps2 mouse disable data reporting"); }
+
+void ps2_mouse_enable_data_reporting(void) { PS2_MOUSE_SEND(PS2_MOUSE_ENABLE_DATA_REPORTING, "ps2 mouse enable data reporting"); }
+
+void ps2_mouse_set_remote_mode(void) {
+ PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_REMOTE_MODE, "ps2 mouse set remote mode");
+ ps2_mouse_mode = PS2_MOUSE_REMOTE_MODE;
+}
+
+void ps2_mouse_set_stream_mode(void) {
+ PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_STREAM_MODE, "ps2 mouse set stream mode");
+ ps2_mouse_mode = PS2_MOUSE_STREAM_MODE;
+}
+
+void ps2_mouse_set_scaling_2_1(void) { PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_SCALING_2_1, "ps2 mouse set scaling 2:1"); }
+
+void ps2_mouse_set_scaling_1_1(void) { PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_SCALING_1_1, "ps2 mouse set scaling 1:1"); }
+
+void ps2_mouse_set_resolution(ps2_mouse_resolution_t resolution) { PS2_MOUSE_SET_SAFE(PS2_MOUSE_SET_RESOLUTION, resolution, "ps2 mouse set resolution"); }
+
+void ps2_mouse_set_sample_rate(ps2_mouse_sample_rate_t sample_rate) { PS2_MOUSE_SET_SAFE(PS2_MOUSE_SET_SAMPLE_RATE, sample_rate, "ps2 mouse set sample rate"); }
+
+/* ============================= HELPERS ============================ */
+
+#define X_IS_NEG (mouse_report->buttons & (1 << PS2_MOUSE_X_SIGN))
+#define Y_IS_NEG (mouse_report->buttons & (1 << PS2_MOUSE_Y_SIGN))
+#define X_IS_OVF (mouse_report->buttons & (1 << PS2_MOUSE_X_OVFLW))
+#define Y_IS_OVF (mouse_report->buttons & (1 << PS2_MOUSE_Y_OVFLW))
+static inline void ps2_mouse_convert_report_to_hid(report_mouse_t *mouse_report) {
+ // PS/2 mouse data is '9-bit integer'(-256 to 255) which is comprised of sign-bit and 8-bit value.
+ // bit: 8 7 ... 0
+ // sign \8-bit/
+ //
+ // Meanwhile USB HID mouse indicates 8bit data(-127 to 127), note that -128 is not used.
+ //
+ // This converts PS/2 data into HID value. Use only -127-127 out of PS/2 9-bit.
+ mouse_report->x = X_IS_NEG ? ((!X_IS_OVF && -127 <= mouse_report->x && mouse_report->x <= -1) ? mouse_report->x : -127) : ((!X_IS_OVF && 0 <= mouse_report->x && mouse_report->x <= 127) ? mouse_report->x : 127);
+ mouse_report->y = Y_IS_NEG ? ((!Y_IS_OVF && -127 <= mouse_report->y && mouse_report->y <= -1) ? mouse_report->y : -127) : ((!Y_IS_OVF && 0 <= mouse_report->y && mouse_report->y <= 127) ? mouse_report->y : 127);
+
+#ifdef PS2_MOUSE_INVERT_BUTTONS
+ // swap left & right buttons
+ uint8_t needs_left = mouse_report->buttons & PS2_MOUSE_BTN_RIGHT;
+ uint8_t needs_right = mouse_report->buttons & PS2_MOUSE_BTN_LEFT;
+ mouse_report->buttons = (mouse_report->buttons & ~(PS2_MOUSE_BTN_MASK)) | (needs_left ? PS2_MOUSE_BTN_LEFT : 0) | (needs_right ? PS2_MOUSE_BTN_RIGHT : 0);
+#else
+ // remove sign and overflow flags
+ mouse_report->buttons &= PS2_MOUSE_BTN_MASK;
+#endif
+
+#ifdef PS2_MOUSE_INVERT_X
+ mouse_report->x = -mouse_report->x;
+#endif
+#ifndef PS2_MOUSE_INVERT_Y // NOTE if not!
+ // invert coordinate of y to conform to USB HID mouse
+ mouse_report->y = -mouse_report->y;
+#endif
+
+#ifdef PS2_MOUSE_ROTATE
+ int8_t x = mouse_report->x;
+ int8_t y = mouse_report->y;
+# if PS2_MOUSE_ROTATE == 90
+ mouse_report->x = y;
+ mouse_report->y = -x;
+# elif PS2_MOUSE_ROTATE == 180
+ mouse_report->x = -x;
+ mouse_report->y = -y;
+# elif PS2_MOUSE_ROTATE == 270
+ mouse_report->x = -y;
+ mouse_report->y = x;
+# endif
+#endif
+}
+
+static inline void ps2_mouse_clear_report(report_mouse_t *mouse_report) {
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ mouse_report->v = 0;
+ mouse_report->h = 0;
+ mouse_report->buttons = 0;
+}
+
+static inline void ps2_mouse_print_report(report_mouse_t *mouse_report) {
+ if (!debug_mouse) return;
+ print("ps2_mouse: [");
+ print_hex8(mouse_report->buttons);
+ print("|");
+ print_hex8((uint8_t)mouse_report->x);
+ print(" ");
+ print_hex8((uint8_t)mouse_report->y);
+ print(" ");
+ print_hex8((uint8_t)mouse_report->v);
+ print(" ");
+ print_hex8((uint8_t)mouse_report->h);
+ print("]\n");
+}
+
+static inline void ps2_mouse_enable_scrolling(void) {
+ PS2_MOUSE_SEND(PS2_MOUSE_SET_SAMPLE_RATE, "Initiaing scroll wheel enable: Set sample rate");
+ PS2_MOUSE_SEND(200, "200");
+ PS2_MOUSE_SEND(PS2_MOUSE_SET_SAMPLE_RATE, "Set sample rate");
+ PS2_MOUSE_SEND(100, "100");
+ PS2_MOUSE_SEND(PS2_MOUSE_SET_SAMPLE_RATE, "Set sample rate");
+ PS2_MOUSE_SEND(80, "80");
+ PS2_MOUSE_SEND(PS2_MOUSE_GET_DEVICE_ID, "Finished enabling scroll wheel");
+ wait_ms(20);
+}
+
+#define PRESS_SCROLL_BUTTONS mouse_report->buttons |= (PS2_MOUSE_SCROLL_BTN_MASK)
+#define RELEASE_SCROLL_BUTTONS mouse_report->buttons &= ~(PS2_MOUSE_SCROLL_BTN_MASK)
+static inline void ps2_mouse_scroll_button_task(report_mouse_t *mouse_report) {
+ static enum {
+ SCROLL_NONE,
+ SCROLL_BTN,
+ SCROLL_SENT,
+ } scroll_state = SCROLL_NONE;
+ static uint16_t scroll_button_time = 0;
+
+ if (PS2_MOUSE_SCROLL_BTN_MASK == (mouse_report->buttons & (PS2_MOUSE_SCROLL_BTN_MASK))) {
+ // All scroll buttons are pressed
+
+ if (scroll_state == SCROLL_NONE) {
+ scroll_button_time = timer_read();
+ scroll_state = SCROLL_BTN;
+ }
+
+ // If the mouse has moved, update the report to scroll instead of move the mouse
+ if (mouse_report->x || mouse_report->y) {
+ scroll_state = SCROLL_SENT;
+ mouse_report->v = -mouse_report->y / (PS2_MOUSE_SCROLL_DIVISOR_V);
+ mouse_report->h = mouse_report->x / (PS2_MOUSE_SCROLL_DIVISOR_H);
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+#ifdef PS2_MOUSE_INVERT_H
+ mouse_report->h = -mouse_report->h;
+#endif
+#ifdef PS2_MOUSE_INVERT_V
+ mouse_report->v = -mouse_report->v;
+#endif
+ }
+ } else if (0 == (PS2_MOUSE_SCROLL_BTN_MASK & mouse_report->buttons)) {
+ // None of the scroll buttons are pressed
+
+#if PS2_MOUSE_SCROLL_BTN_SEND
+ if (scroll_state == SCROLL_BTN && timer_elapsed(scroll_button_time) < PS2_MOUSE_SCROLL_BTN_SEND) {
+ PRESS_SCROLL_BUTTONS;
+ host_mouse_send(mouse_report);
+ wait_ms(100);
+ RELEASE_SCROLL_BUTTONS;
+ }
+#endif
+ scroll_state = SCROLL_NONE;
+ }
+
+ RELEASE_SCROLL_BUTTONS;
+}
diff --git a/tmk_core/protocol/ps2_mouse.h b/drivers/ps2/ps2_mouse.h
similarity index 100%
rename from tmk_core/protocol/ps2_mouse.h
rename to drivers/ps2/ps2_mouse.h
diff --git a/drivers/qwiic/micro_oled.c b/drivers/qwiic/micro_oled.c
deleted file mode 100644
index d011ad225cf..00000000000
--- a/drivers/qwiic/micro_oled.c
+++ /dev/null
@@ -1,482 +0,0 @@
-/* Jim Lindblom @ SparkFun Electronics
- * October 26, 2014
- * https://github.com/sparkfun/Micro_OLED_Breakout/tree/master/Firmware/Arduino/libraries/SFE_MicroOLED
- *
- * Modified by:
- * Emil Varughese @ Edwin Robotics Pvt. Ltd.
- * July 27, 2015
- * https://github.com/emil01/SparkFun_Micro_OLED_Arduino_Library/
- *
- * This code was heavily based around the MicroView library, written by GeekAmmo
- * (https://github.com/geekammo/MicroView-Arduino-Library).
- *
- * Adapted for QMK by:
- * Jack Humbert
- * October 11, 2018
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-#include "micro_oled.h"
-#include "print.h"
-#include
-#include "util/font5x7.h"
-#include "util/font8x16.h"
-#include
-
-#define TOTALFONTS 2
-const unsigned char* fonts_pointer[] = {font5x7, font8x16};
-
-uint8_t foreColor, drawMode, fontWidth, fontHeight, fontType, fontStartChar, fontTotalChar, cursorX, cursorY;
-uint16_t fontMapWidth;
-
-#ifndef _BV
-# define _BV(x) (1 << (x))
-#endif
-
-#define swap(a, b) \
- { \
- uint8_t t = a; \
- a = b; \
- b = t; \
- }
-
-uint8_t micro_oled_transfer_buffer[20];
-static uint8_t micro_oled_screen_current[LCDWIDTH * LCDHEIGHT / 8] = {0};
-
-/* LCD Memory organised in 64 horizontal pixel and 6 rows of byte
- B B .............B -----
- y y .............y \
- t t .............t \
- e e .............e \
- 0 1 .............63 \
- \
- D0 D0.............D0 \
- D1 D1.............D1 / ROW 0
- D2 D2.............D2 /
- D3 D3.............D3 /
- D4 D4.............D4 /
- D5 D5.............D5 /
- D6 D6.............D6 /
- D7 D7.............D7 ----
- */
-#ifdef NO_LCD_SPLASH
-// do not initialize with a splash screen
-static uint8_t micro_oled_screen_buffer[LCDWIDTH * LCDHEIGHT / 8] = {0};
-#else
-# if LCDWIDTH == 64
-# if LCDHEIGHT == 48
-static uint8_t micro_oled_screen_buffer[] = {
- // QMK Logo - generated at http://www.majer.ch/lcd/adf_bitmap.php
- // 64x48 image
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0xF8, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xF8, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x8C, 0x8C, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x8C, 0x8C, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x31, 0x31, 0x31, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0xF1, 0xE3, 0xE7, 0xCF, 0xCF, 0xCF, 0xCF, 0x00, 0x00, 0xCF, 0xCF, 0xCF, 0xC7, 0xE7, 0xE3, 0xF1, 0xF8, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x31, 0x31, 0x31, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x1F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x1F, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-# endif
-# elif LCDWIDTH == 128
-# if LCDHEIGHT == 32
-static uint8_t micro_oled_screen_buffer[LCDWIDTH * LCDHEIGHT / 8] = {
- // 128x32 qmk image
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xFC, 0xFC, 0xE0, 0xFC, 0xFC, 0xE0, 0xF0, 0xFC, 0xE0, 0xE0, 0xFC, 0xE0, 0xE0, 0xFC, 0xFC, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x10, 0x10, 0x30, 0xE0, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xB2, 0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0xFF, 0xFF, 0xFF, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0xB2, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x02, 0x02, 0x03, 0x01, 0x00, 0x06, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x06, 0x00, 0x03, 0x1E, 0x18, 0x0F, 0x01, 0x0F, 0x18, 0x1E, 0x01, 0x00, 0x0F, 0x1F, 0x12, 0x02, 0x12, 0x13, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0E, 0x1F, 0x12, 0x02, 0x12, 0x13, 0x00, 0x00, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x4D, 0x4D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF9, 0xF3, 0xF3, 0xC0, 0x80, 0xF3, 0xF3, 0xF3, 0xF9, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x4D, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x20, 0x10, 0x10, 0xE0, 0xC0, 0x00, 0x70, 0xC0, 0x00, 0x80, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x0C, 0x04, 0x04, 0x04, 0x04, 0x1C, 0xF0, 0x00, 0x00, 0xFC, 0x0C, 0x38, 0xE0, 0x00, 0x00, 0xC0, 0x38, 0x0C, 0xFC, 0x00, 0x00, 0xFC, 0xFC, 0x60, 0x90, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x03, 0x07, 0x07, 0x3F, 0x3F, 0x07, 0x3F, 0x3F, 0x07, 0x0F, 0x3F, 0x07, 0x07, 0x3F, 0x07, 0x07, 0x3F, 0x3F, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x04, 0x04, 0x07, 0x01, 0x00, 0x00, 0x13, 0x1E, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x04, 0x04, 0x04, 0x04, 0x07, 0x0D, 0x08, 0x00, 0x07, 0x00, 0x00, 0x01, 0x07, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x07, 0x00, 0x01, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-# elif LCDHEIGHT == 64
-static uint8_t micro_oled_screen_buffer[LCDWIDTH * LCDHEIGHT / 8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0xFF, 0x7F, 0x7E, 0xFE, 0xFF, 0xFF, 0xFE, 0xFE, 0x7F, 0x7F, 0xFE, 0xFE, 0xFF, 0xFF, 0xFE, 0x7E, 0x7F, 0xFF, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x99, 0x99, 0x99, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, 0xF3, 0xF3, 0xE7, 0xE7, 0x00, 0x00, 0xE7, 0xE7, 0xF3, 0xF3, 0xF0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x0F, 0x1F, 0x3F, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0x3F, 0x1F, 0x0F, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x80, 0x03, 0x03, 0x00, 0x00, 0x01, 0x03, 0x00, 0x80, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x11, 0x11, 0x11, 0x0E, 0x00, 0x70, 0x88, 0x04, 0x04, 0x04, 0xF8, 0x00, 0x00, 0x3C, 0xE0, 0xC0, 0x38, 0x1C, 0xE0, 0x80, 0x70, 0x0C, 0x00, 0xF8, 0xAC, 0x24, 0x24, 0x3C, 0x30, 0x00, 0x00, 0xFC, 0x0C, 0x04, 0x00, 0xF8, 0xAC, 0x24, 0x24, 0x2C, 0x30, 0x00, 0x70, 0xDC, 0x04, 0x04, 0x88, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x8C, 0x04, 0x04, 0xF8, 0x00, 0x04, 0x3C, 0xE0, 0x80, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x83, 0x01, 0x01, 0x01, 0x81, 0xFE, 0x3C, 0x00, 0x00, 0xFF, 0x03, 0x0E, 0x70, 0xC0, 0xE0, 0x38, 0x06, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x18, 0x38, 0x66, 0xC3, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-// TODO: generate bitmap of QMK logo here
-# endif
-# else
-// catchall for custom screen sizes
-static uint8_t micro_oled_screen_buffer[LCDWIDTH * LCDHEIGHT / 8] = {0};
-# endif
-#endif
-
-void micro_oled_init(void) {
- i2c_init();
-
-#ifdef __AVR__
- i2c_start(I2C_ADDRESS_SA0_1, 100);
-#else
- i2c_start(I2C_ADDRESS_SA0_1);
-#endif
-
- // Display Init sequence for 64x48 OLED module
- send_command(DISPLAYOFF); // 0xAE
-
- send_command(SETDISPLAYCLOCKDIV); // 0xD5
- send_command(0x80); // the suggested ratio 0x80
-
- send_command(SETMULTIPLEX); // 0xA8
- send_command(LCDHEIGHT - 1);
-
- send_command(SETDISPLAYOFFSET); // 0xD3
- send_command(0x00); // no offset
-
- send_command(SETSTARTLINE | 0x00); // line #0
-
- send_command(CHARGEPUMP); // enable charge pump
- send_command(0x14);
-
- send_command(NORMALDISPLAY); // 0xA6
- send_command(DISPLAYALLONRESUME); // 0xA4
-
- // display at regular orientation
- send_command(SEGREMAP | 0x1);
- send_command(COMSCANDEC);
-
-// rotate display 180
-#ifdef micro_oled_rotate_180
- send_command(SEGREMAP);
- send_command(COMSCANINC);
-#endif
-
- send_command(MEMORYMODE);
- send_command(0x02); // 0x02 = 10b, Page addressing mode
-
- send_command(SETCOMPINS); // 0xDA
- if (LCDHEIGHT > 32) {
- send_command(0x12);
- } else {
- send_command(0x02);
- }
- send_command(SETCONTRAST); // 0x81
- send_command(0x8F);
-
- send_command(SETPRECHARGE); // 0xd9
- send_command(0xF1);
-
- send_command(SETVCOMDESELECT); // 0xDB
- send_command(0x40);
-
- send_command(DISPLAYON); //--turn on oled panel
- clear_screen(); // Erase hardware memory inside the OLED controller to avoid random data in memory.
- send_buffer();
-}
-
-void send_command(uint8_t command) {
- micro_oled_transfer_buffer[0] = I2C_COMMAND;
- micro_oled_transfer_buffer[1] = command;
- i2c_transmit(I2C_ADDRESS_SA0_1 << 1, micro_oled_transfer_buffer, 2, 100);
-}
-
-void send_data(uint8_t data) {
- micro_oled_transfer_buffer[0] = I2C_DATA;
- micro_oled_transfer_buffer[1] = data;
- i2c_transmit(I2C_ADDRESS_SA0_1 << 1, micro_oled_transfer_buffer, 2, 100);
-}
-
-/** \brief Set SSD1306 page address.
- Send page address command and address to the SSD1306 OLED controller.
-*/
-void set_page_address(uint8_t address) {
- address = (0xB0 | address);
- send_command(address);
-}
-
-/** \brief Set SSD1306 column address.
- Send column address command and address to the SSD1306 OLED controller.
-*/
-void set_column_address(uint8_t address) {
- send_command((0x10 | (address >> 4)) + ((128 - LCDWIDTH) >> 8));
- send_command(0x0F & address);
-}
-
-/** \brief Clear SSD1306's memory.
- To clear GDRAM inside the LCD controller.
-*/
-void clear_screen(void) {
- for (int i = 0; i < 8; i++) {
- set_page_address(i);
- set_column_address(0);
- for (int j = 0; j < 0x80; j++) {
- send_data(0);
- }
- }
-
- memset(micro_oled_screen_current, 0, LCDWIDTH * LCDHEIGHT / 8);
-}
-
-/** \brief Clear SSD1306's memory.
- To clear GDRAM inside the LCD controller.
-*/
-void clear_buffer(void) {
- // 384
- memset(micro_oled_screen_buffer, 0, LCDWIDTH * LCDHEIGHT / 8);
-}
-
-/** \brief Invert display.
- The PIXEL_ON color of the display will turn to PIXEL_OFF and the PIXEL_OFF will turn to PIXEL_ON.
-*/
-void invert_screen(bool invert) {
- if (invert) {
- send_command(INVERTDISPLAY);
- } else {
- send_command(NORMALDISPLAY);
- }
-}
-
-/** \brief Set contrast.
- OLED contract value from 0 to 255. Note: Contrast level is not very obvious.
-*/
-void set_contrast(uint8_t contrast) {
- send_command(SETCONTRAST); // 0x81
- send_command(contrast);
-}
-
-/** \brief Transfer display buffer.
- Sends the updated buffer to the controller - the current status is checked before to save i2c exectution time
-*/
-void send_buffer(void) {
- uint8_t i, j;
-
- uint8_t page_addr = 0xFF;
- for (i = 0; i < LCDHEIGHT / 8; i++) {
- uint8_t col_addr = 0xFF;
- for (j = 0; j < LCDWIDTH; j++) {
- if (micro_oled_screen_buffer[i * LCDWIDTH + j] != micro_oled_screen_current[i * LCDWIDTH + j]) {
- if (page_addr != i) {
- set_page_address(i);
- page_addr = i;
- }
- if (col_addr != j) {
- set_column_address(j);
- col_addr = j + 1;
- }
- send_data(micro_oled_screen_buffer[i * LCDWIDTH + j]);
- micro_oled_screen_current[i * LCDWIDTH + j] = micro_oled_screen_buffer[i * LCDWIDTH + j];
- }
- }
- }
-}
-
-/** \brief Draw pixel with color and mode.
- Draw color pixel in the screen buffer's x,y position with NORM or XOR draw mode.
-*/
-void draw_pixel(uint8_t x, uint8_t y, uint8_t color, uint8_t mode) {
- if ((x < 0) || (x >= LCDWIDTH) || (y < 0) || (y >= LCDHEIGHT)) return;
-
- if (mode == XOR) {
- if (color == PIXEL_ON) micro_oled_screen_buffer[x + (y / 8) * LCDWIDTH] ^= _BV((y % 8));
- } else {
- if (color == PIXEL_ON)
- micro_oled_screen_buffer[x + (y / 8) * LCDWIDTH] |= _BV((y % 8));
- else
- micro_oled_screen_buffer[x + (y / 8) * LCDWIDTH] &= ~_BV((y % 8));
- }
-}
-
-/** \brief Draw line with color and mode.
-Draw line using color and mode from x0,y0 to x1,y1 of the screen buffer.
-*/
-void draw_line(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t color, uint8_t mode) {
- uint8_t steep = abs(y1 - y0) > abs(x1 - x0);
- if (steep) {
- swap(x0, y0);
- swap(x1, y1);
- }
-
- if (x0 > x1) {
- swap(x0, x1);
- swap(y0, y1);
- }
-
- uint8_t dx, dy;
- dx = x1 - x0;
- dy = abs(y1 - y0);
-
- int8_t err = dx / 2;
- int8_t ystep;
-
- if (y0 < y1) {
- ystep = 1;
- } else {
- ystep = -1;
- }
-
- for (; x0 < x1; x0++) {
- if (steep) {
- draw_pixel(y0, x0, color, mode);
- } else {
- draw_pixel(x0, y0, color, mode);
- }
- err -= dy;
- if (err < 0) {
- y0 += ystep;
- err += dx;
- }
- }
-}
-
-/** \brief Draw horizontal line with color and mode.
-Draw horizontal line using color and mode from x,y to x+width,y of the screen buffer.
-*/
-void draw_line_hori(uint8_t x, uint8_t y, uint8_t width, uint8_t color, uint8_t mode) { draw_line(x, y, x + width, y, color, mode); }
-
-/** \brief Draw vertical line.
-Draw vertical line using current fore color and current draw mode from x,y to x,y+height of the screen buffer.
-*/
-void draw_line_vert(uint8_t x, uint8_t y, uint8_t height, bool color, uint8_t mode) { draw_line(x, y, x, y + height, color, mode); }
-
-/** \brief Draw rectangle with color and mode.
-Draw rectangle using color and mode from x,y to x+width,y+height of the screen buffer.
-*/
-void draw_rect(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode) {
- uint8_t tempHeight;
-
- draw_line_hori(x, y, width, color, mode);
- draw_line_hori(x, y + height - 1, width, color, mode);
-
- tempHeight = height - 2;
-
- // skip drawing vertical lines to avoid overlapping of pixel that will
- // affect XOR plot if no pixel in between horizontal lines
- if (tempHeight < 1) return;
-
- draw_line_vert(x, y + 1, tempHeight, color, mode);
- draw_line_vert(x + width - 1, y + 1, tempHeight, color, mode);
-}
-
-/** \brief Draw rectangle with color and mode.
-Draw rectangle using color and mode from x,y to x+width,y+height of the screen buffer.
-*/
-void draw_rect_soft(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode) {
- uint8_t tempHeight;
-
- draw_line_hori(x + 1, y, width - 2, color, mode);
- draw_line_hori(x + 1, y + height - 1, width - 2, color, mode);
-
- tempHeight = height - 2;
-
- // skip drawing vertical lines to avoid overlapping of pixel that will
- // affect XOR plot if no pixel in between horizontal lines
- if (tempHeight < 1) return;
-
- draw_line_vert(x, y + 1, tempHeight, color, mode);
- draw_line_vert(x + width - 1, y + 1, tempHeight, color, mode);
-}
-
-/** \brief Draw filled rectangle with color and mode.
-Draw filled rectangle using color and mode from x,y to x+width,y+height of the screen buffer.
-*/
-void draw_rect_filled(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode) {
- // TODO - need to optimise the memory map draw so that this function will not call pixel one by one
- for (int i = x; i < x + width; i++) {
- draw_line_vert(i, y, height, color, mode);
- }
-}
-
-/** \brief Draw filled rectangle with color and mode.
-Draw filled rectangle using color and mode from x,y to x+width,y+height of the screen buffer.
-*/
-void draw_rect_filled_soft(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode) {
- // TODO - need to optimise the memory map draw so that this function will not call pixel one by one
- for (int i = x; i < x + width; i++) {
- if (i == x || i == (x + width - 1))
- draw_line_vert(i, y + 1, height - 2, color, mode);
- else
- draw_line_vert(i, y, height, color, mode);
- }
-}
-
-/** \brief Draw character with color and mode.
- Draw character c using color and draw mode at x,y.
-*/
-void draw_char(uint8_t x, uint8_t y, uint8_t c, uint8_t color, uint8_t mode, uint8_t font) {
- // TODO - New routine to take font of any height, at the moment limited to font height in multiple of 8 pixels
-
- uint8_t rowsToDraw, row, tempC;
- uint8_t i, j, temp;
- uint16_t charPerBitmapRow, charColPositionOnBitmap, charRowPositionOnBitmap, charBitmapStartPosition;
-
- if ((font >= TOTALFONTS) || (font < 0)) return;
-
- uint8_t fontType = font;
- uint8_t fontWidth = pgm_read_byte(fonts_pointer[fontType] + 0);
- uint8_t fontHeight = pgm_read_byte(fonts_pointer[fontType] + 1);
- uint8_t fontStartChar = pgm_read_byte(fonts_pointer[fontType] + 2);
- uint8_t fontTotalChar = pgm_read_byte(fonts_pointer[fontType] + 3);
- uint16_t fontMapWidth = (pgm_read_byte(fonts_pointer[fontType] + 4) * 100) + pgm_read_byte(fonts_pointer[fontType] + 5); // two bytes values into integer 16
-
- if ((c < fontStartChar) || (c > (fontStartChar + fontTotalChar - 1))) // no bitmap for the required c
- return;
-
- tempC = c - fontStartChar;
-
- // each row (in datasheet is call page) is 8 bits high, 16 bit high character will have 2 rows to be drawn
- rowsToDraw = fontHeight / 8; // 8 is LCD's page size, see SSD1306 datasheet
- if (rowsToDraw <= 1) rowsToDraw = 1;
-
- // the following draw function can draw anywhere on the screen, but SLOW pixel by pixel draw
- if (rowsToDraw == 1) {
- for (i = 0; i < fontWidth + 1; i++) {
- if (i == fontWidth) // this is done in a weird way because for 5x7 font, there is no margin, this code add a margin after col 5
- temp = 0;
- else
- temp = pgm_read_byte(fonts_pointer[fontType] + FONTHEADERSIZE + (tempC * fontWidth) + i);
-
- for (j = 0; j < 8; j++) { // 8 is the LCD's page height (see datasheet for explanation)
- if (temp & 0x1) {
- draw_pixel(x + i, y + j, color, mode);
- } else {
- draw_pixel(x + i, y + j, !color, mode);
- }
-
- temp >>= 1;
- }
- }
- return;
- }
-
- // font height over 8 bit
- // take character "0" ASCII 48 as example
- charPerBitmapRow = fontMapWidth / fontWidth; // 256/8 =32 char per row
- charColPositionOnBitmap = tempC % charPerBitmapRow; // =16
- charRowPositionOnBitmap = (int)(tempC / charPerBitmapRow); // =1
- charBitmapStartPosition = (charRowPositionOnBitmap * fontMapWidth * (fontHeight / 8)) + (charColPositionOnBitmap * fontWidth);
-
- // each row on LCD is 8 bit height (see datasheet for explanation)
- for (row = 0; row < rowsToDraw; row++) {
- for (i = 0; i < fontWidth; i++) {
- temp = pgm_read_byte(fonts_pointer[fontType] + FONTHEADERSIZE + (charBitmapStartPosition + i + (row * fontMapWidth)));
- for (j = 0; j < 8; j++) { // 8 is the LCD's page height (see datasheet for explanation)
- if (temp & 0x1) {
- draw_pixel(x + i, y + j + (row * 8), color, mode);
- } else {
- draw_pixel(x + i, y + j + (row * 8), !color, mode);
- }
- temp >>= 1;
- }
- }
- }
-}
-
-void draw_string(uint8_t x, uint8_t y, char* string, uint8_t color, uint8_t mode, uint8_t font) {
- if ((font >= TOTALFONTS) || (font < 0)) return;
-
- uint8_t fontType = font;
- uint8_t fontWidth = pgm_read_byte(fonts_pointer[fontType] + 0);
-
- uint8_t cur_x = x;
- for (int i = 0; i < strlen(string); i++) {
- draw_char(cur_x, y, string[i], color, mode, font);
- cur_x += fontWidth + 1;
- }
-}
diff --git a/drivers/qwiic/micro_oled.h b/drivers/qwiic/micro_oled.h
deleted file mode 100644
index 6f9106f5819..00000000000
--- a/drivers/qwiic/micro_oled.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/* Jim Lindblom @ SparkFun Electronics
- * October 26, 2014
- * https://github.com/sparkfun/Micro_OLED_Breakout/tree/master/Firmware/Arduino/libraries/SFE_MicroOLED
- *
- * Modified by:
- * Emil Varughese @ Edwin Robotics Pvt. Ltd.
- * July 27, 2015
- * https://github.com/emil01/SparkFun_Micro_OLED_Arduino_Library/
- *
- * This code was heavily based around the MicroView library, written by GeekAmmo
- * (https://github.com/geekammo/MicroView-Arduino-Library).
- *
- * Adapted for QMK by:
- * Jack Humbert
- * October 11, 2018
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-#pragma once
-
-#include "qwiic.h"
-
-void micro_oled_init(void);
-
-void send_command(uint8_t command);
-void send_data(uint8_t data);
-void set_page_address(uint8_t address);
-void set_column_address(uint8_t address);
-void clear_screen(void);
-void clear_buffer(void);
-void send_buffer(void);
-void draw_pixel(uint8_t x, uint8_t y, uint8_t color, uint8_t mode);
-void draw_line(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t color, uint8_t mode);
-void draw_line_hori(uint8_t x, uint8_t y, uint8_t width, uint8_t color, uint8_t mode);
-void draw_line_vert(uint8_t x, uint8_t y, uint8_t height, bool color, uint8_t mode);
-void draw_rect(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode);
-void draw_rect_soft(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode);
-void draw_rect_filled(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode);
-void draw_rect_filled_soft(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode);
-void draw_char(uint8_t x, uint8_t y, uint8_t c, uint8_t color, uint8_t mode, uint8_t font);
-void draw_string(uint8_t x, uint8_t y, char* string, uint8_t color, uint8_t mode, uint8_t font);
-
-#define I2C_ADDRESS_SA0_0 0b0111100
-#ifndef I2C_ADDRESS_SA0_1
-# define I2C_ADDRESS_SA0_1 0b0111101
-#endif
-#define I2C_COMMAND 0x00
-#define I2C_DATA 0x40
-#define PIXEL_OFF 0
-#define PIXEL_ON 1
-
-#ifndef LCDWIDTH
-# define LCDWIDTH 64
-#endif
-#ifndef LCDHEIGHT
-# define LCDHEIGHT 48
-#endif
-#define FONTHEADERSIZE 6
-
-#define NORM 0
-#define XOR 1
-
-#define PAGE 0
-#define ALL 1
-
-#define WIDGETSTYLE0 0
-#define WIDGETSTYLE1 1
-#define WIDGETSTYLE2 2
-
-#define SETCONTRAST 0x81
-#define DISPLAYALLONRESUME 0xA4
-#define DISPLAYALLON 0xA5
-#define NORMALDISPLAY 0xA6
-#define INVERTDISPLAY 0xA7
-#define DISPLAYOFF 0xAE
-#define DISPLAYON 0xAF
-#define SETDISPLAYOFFSET 0xD3
-#define SETCOMPINS 0xDA
-#define SETVCOMDESELECT 0xDB
-#define SETDISPLAYCLOCKDIV 0xD5
-#define SETPRECHARGE 0xD9
-#define SETMULTIPLEX 0xA8
-#define SETLOWCOLUMN 0x00
-#define SETHIGHCOLUMN 0x10
-#define SETSTARTLINE 0x40
-#define MEMORYMODE 0x20
-#define COMSCANINC 0xC0
-#define COMSCANDEC 0xC8
-#define SEGREMAP 0xA0
-#define CHARGEPUMP 0x8D
-#define EXTERNALVCC 0x01
-#define SWITCHCAPVCC 0x02
-
-// Scroll
-#define ACTIVATESCROLL 0x2F
-#define DEACTIVATESCROLL 0x2E
-#define SETVERTICALSCROLLAREA 0xA3
-#define RIGHTHORIZONTALSCROLL 0x26
-#define LEFT_HORIZONTALSCROLL 0x27
-#define VERTICALRIGHTHORIZONTALSCROLL 0x29
-#define VERTICALLEFTHORIZONTALSCROLL 0x2A
-
-typedef enum CMD {
- CMD_CLEAR, // 0
- CMD_INVERT, // 1
- CMD_CONTRAST, // 2
- CMD_DISPLAY, // 3
- CMD_SETCURSOR, // 4
- CMD_PIXEL, // 5
- CMD_LINE, // 6
- CMD_LINEH, // 7
- CMD_LINEV, // 8
- CMD_RECT, // 9
- CMD_RECTFILL, // 10
- CMD_CIRCLE, // 11
- CMD_CIRCLEFILL, // 12
- CMD_DRAWCHAR, // 13
- CMD_DRAWBITMAP, // 14
- CMD_GETLCDWIDTH, // 15
- CMD_GETLCDHEIGHT, // 16
- CMD_SETCOLOR, // 17
- CMD_SETDRAWMODE // 18
-} commCommand_t;
diff --git a/drivers/qwiic/qwiic.c b/drivers/qwiic/qwiic.c
deleted file mode 100644
index 316d6539cbe..00000000000
--- a/drivers/qwiic/qwiic.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright 2018 Jack Humbert
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-#include "qwiic.h"
-
-void qwiic_init(void) {
-#ifdef QWIIC_JOYSTIIC_ENABLE
- joystiic_init();
-#endif
-#ifdef QWIIC_MICRO_OLED_ENABLE
- micro_oled_init();
-#endif
-}
-
-void qwiic_task(void) {
-#ifdef QWIIC_JOYSTIIC_ENABLE
- joystiic_task();
-#endif
-}
diff --git a/drivers/qwiic/qwiic.h b/drivers/qwiic/qwiic.h
deleted file mode 100644
index 8c3d1c8d632..00000000000
--- a/drivers/qwiic/qwiic.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright 2018 Jack Humbert
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-#pragma once
-
-#include "i2c_master.h"
-
-#ifdef QWIIC_JOYSTIIC_ENABLE
-# include "joystiic.h"
-#endif
-#ifdef QWIIC_MICRO_OLED_ENABLE
-# include "micro_oled.h"
-#endif
-
-void qwiic_init(void);
-void qwiic_task(void);
diff --git a/drivers/qwiic/qwiic.mk b/drivers/qwiic/qwiic.mk
deleted file mode 100644
index 164bd721081..00000000000
--- a/drivers/qwiic/qwiic.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-ifeq ($(strip $(QWIIC_ENABLE)),yes)
- COMMON_VPATH += $(DRIVER_PATH)/qwiic
- OPT_DEFS += -DQWIIC_ENABLE
- SRC += qwiic.c
- QUANTUM_LIB_SRC += i2c_master.c
-
-ifneq ($(filter JOYSTIIC, $(QWIIC_DRIVERS)),)
- OPT_DEFS += -DQWIIC_JOYSTIIC_ENABLE
- SRC += joystiic.c
-endif
-
-ifneq ($(filter MICRO_OLED, $(QWIIC_DRIVERS)),)
- OPT_DEFS += -DQWIIC_MICRO_OLED_ENABLE
- SRC += micro_oled.c
-endif
-
-endif
diff --git a/drivers/qwiic/util/font5x7.h b/drivers/qwiic/util/font5x7.h
deleted file mode 100644
index a641945aaed..00000000000
--- a/drivers/qwiic/util/font5x7.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/******************************************************************************
-font5x7.h
-Definition for small font
-
-This file was imported from the MicroView library, written by GeekAmmo
-(https://github.com/geekammo/MicroView-Arduino-Library), and released under
-the terms of the GNU General Public License as published by the Free Software
-Foundation, either version 3 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-
-Modified by:
-Emil Varughese @ Edwin Robotics Pvt. Ltd.
-July 27, 2015
-https://github.com/emil01/SparkFun_Micro_OLED_Arduino_Library/
-
-******************************************************************************/
-#pragma once
-
-#include "progmem.h"
-
-// Standard ASCII 5x7 font
-static const unsigned char font5x7[] PROGMEM = {
- // first row defines - FONTWIDTH, FONTHEIGHT, ASCII START CHAR, TOTAL CHARACTERS, FONT MAP WIDTH HIGH, FONT MAP WIDTH LOW (2,56 meaning 256)
- 5, 8, 0, 255, 12, 75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, 0x18, 0x3C, 0x18, 0x00, 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, 0x18, 0x24, 0x18, 0x00, 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x26, 0x29, 0x79, 0x29, 0x26, 0x40, 0x7F, 0x05, 0x05, 0x07, 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x14, 0x22, 0x7F, 0x22, 0x14, 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, 0x66, 0x89, 0x95, 0x6A, 0x60, 0x60, 0x60, 0x60, 0x60, 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x08, 0x04, 0x7E, 0x04, 0x08, 0x10, 0x20, 0x7E, 0x20, 0x10, 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x1E, 0x10, 0x10, 0x10, 0x10, 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x30, 0x38, 0x3E, 0x38, 0x30,
- 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x23, 0x13, 0x08, 0x64, 0x62, 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x80, 0x70, 0x30, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x60, 0x60, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x72, 0x49, 0x49, 0x49, 0x46, 0x21, 0x41, 0x49, 0x4D, 0x33, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x27, 0x45, 0x45, 0x45, 0x39, 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x41, 0x21, 0x11, 0x09, 0x07, 0x36, 0x49, 0x49, 0x49, 0x36, 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x41, 0x22, 0x14, 0x08, 0x02,
- 0x01, 0x59, 0x09, 0x06, 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x7F, 0x49, 0x49, 0x49, 0x41, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x3E, 0x41, 0x41, 0x51, 0x73, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x41, 0x7F, 0x41, 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, 0x7F, 0x08, 0x14, 0x22, 0x41, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x26, 0x49, 0x49, 0x49, 0x32, 0x03, 0x01, 0x7F, 0x01, 0x03, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x63, 0x14, 0x08, 0x14, 0x63, 0x03, 0x04, 0x78, 0x04, 0x03, 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x41, 0x41, 0x41, 0x7F, 0x04, 0x02, 0x01, 0x02, 0x04, 0x40, 0x40,
- 0x40, 0x40, 0x40, 0x00, 0x03, 0x07, 0x08, 0x00, 0x20, 0x54, 0x54, 0x78, 0x40, 0x7F, 0x28, 0x44, 0x44, 0x38, 0x38, 0x44, 0x44, 0x44, 0x28, 0x38, 0x44, 0x44, 0x28, 0x7F, 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, 0x08, 0x7E, 0x09, 0x02, 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, 0x44, 0x7D, 0x40, 0x00, 0x20, 0x40, 0x40, 0x3D, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, 0x7C, 0x04, 0x78, 0x04, 0x78, 0x7C, 0x08, 0x04, 0x04, 0x78, 0x38, 0x44, 0x44, 0x44, 0x38, 0xFC, 0x18, 0x24, 0x24, 0x18, 0x18, 0x24, 0x24, 0x18, 0xFC, 0x7C, 0x08, 0x04, 0x04, 0x08, 0x48, 0x54, 0x54, 0x54, 0x24, 0x04, 0x04, 0x3F, 0x44, 0x24, 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x44, 0x28, 0x10, 0x28, 0x44, 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x41, 0x36, 0x08, 0x00, 0x02, 0x01, 0x02, 0x04, 0x02, 0x3C, 0x26, 0x23,
- 0x26, 0x3C, 0x1E, 0xA1, 0xA1, 0x61, 0x12, 0x3A, 0x40, 0x40, 0x20, 0x7A, 0x38, 0x54, 0x54, 0x55, 0x59, 0x21, 0x55, 0x55, 0x79, 0x41, 0x21, 0x54, 0x54, 0x78, 0x41, 0x21, 0x55, 0x54, 0x78, 0x40, 0x20, 0x54, 0x55, 0x79, 0x40, 0x0C, 0x1E, 0x52, 0x72, 0x12, 0x39, 0x55, 0x55, 0x55, 0x59, 0x39, 0x54, 0x54, 0x54, 0x59, 0x39, 0x55, 0x54, 0x54, 0x58, 0x00, 0x00, 0x45, 0x7C, 0x41, 0x00, 0x02, 0x45, 0x7D, 0x42, 0x00, 0x01, 0x45, 0x7C, 0x40, 0xF0, 0x29, 0x24, 0x29, 0xF0, 0xF0, 0x28, 0x25, 0x28, 0xF0, 0x7C, 0x54, 0x55, 0x45, 0x00, 0x20, 0x54, 0x54, 0x7C, 0x54, 0x7C, 0x0A, 0x09, 0x7F, 0x49, 0x32, 0x49, 0x49, 0x49, 0x32, 0x32, 0x48, 0x48, 0x48, 0x32, 0x32, 0x4A, 0x48, 0x48, 0x30, 0x3A, 0x41, 0x41, 0x21, 0x7A, 0x3A, 0x42, 0x40, 0x20, 0x78, 0x00, 0x9D, 0xA0, 0xA0, 0x7D, 0x39, 0x44, 0x44, 0x44, 0x39, 0x3D, 0x40, 0x40, 0x40, 0x3D, 0x3C, 0x24, 0xFF, 0x24, 0x24, 0x48, 0x7E, 0x49, 0x43, 0x66, 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, 0xFF, 0x09, 0x29, 0xF6, 0x20, 0xC0, 0x88, 0x7E, 0x09,
- 0x03, 0x20, 0x54, 0x54, 0x79, 0x41, 0x00, 0x00, 0x44, 0x7D, 0x41, 0x30, 0x48, 0x48, 0x4A, 0x32, 0x38, 0x40, 0x40, 0x22, 0x7A, 0x00, 0x7A, 0x0A, 0x0A, 0x72, 0x7D, 0x0D, 0x19, 0x31, 0x7D, 0x26, 0x29, 0x29, 0x2F, 0x28, 0x26, 0x29, 0x29, 0x29, 0x26, 0x30, 0x48, 0x4D, 0x40, 0x20, 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x38, 0x2F, 0x10, 0xC8, 0xAC, 0xBA, 0x2F, 0x10, 0x28, 0x34, 0xFA, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x08, 0x14, 0x2A, 0x14, 0x22, 0x22, 0x14, 0x2A, 0x14, 0x08, 0xAA, 0x00, 0x55, 0x00, 0xAA, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x10, 0x10, 0x10, 0xFF, 0x00, 0x14, 0x14, 0x14, 0xFF, 0x00, 0x10, 0x10, 0xFF, 0x00, 0xFF, 0x10, 0x10, 0xF0, 0x10, 0xF0, 0x14, 0x14, 0x14, 0xFC, 0x00, 0x14, 0x14, 0xF7, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x14, 0x14, 0xF4, 0x04, 0xFC, 0x14, 0x14, 0x17, 0x10, 0x1F, 0x10, 0x10, 0x1F, 0x10, 0x1F, 0x14, 0x14, 0x14, 0x1F, 0x00, 0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x10,
- 0x10, 0x10, 0x10, 0x1F, 0x10, 0x10, 0x10, 0x10, 0xF0, 0x10, 0x00, 0x00, 0x00, 0xFF, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xFF, 0x10, 0x00, 0x00, 0x00, 0xFF, 0x14, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0x10, 0x17, 0x00, 0x00, 0xFC, 0x04, 0xF4, 0x14, 0x14, 0x17, 0x10, 0x17, 0x14, 0x14, 0xF4, 0x04, 0xF4, 0x00, 0x00, 0xFF, 0x00, 0xF7, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xF7, 0x00, 0xF7, 0x14, 0x14, 0x14, 0x17, 0x14, 0x10, 0x10, 0x1F, 0x10, 0x1F, 0x14, 0x14, 0x14, 0xF4, 0x14, 0x10, 0x10, 0xF0, 0x10, 0xF0, 0x00, 0x00, 0x1F, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x14, 0x00, 0x00, 0x00, 0xFC, 0x14, 0x00, 0x00, 0xF0, 0x10, 0xF0, 0x10, 0x10, 0xFF, 0x10, 0xFF, 0x14, 0x14, 0x14, 0xFF, 0x14, 0x10, 0x10, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x38, 0x44, 0x44, 0x38, 0x44, 0x7C,
- 0x2A, 0x2A, 0x3E, 0x14, 0x7E, 0x02, 0x02, 0x06, 0x06, 0x02, 0x7E, 0x02, 0x7E, 0x02, 0x63, 0x55, 0x49, 0x41, 0x63, 0x38, 0x44, 0x44, 0x3C, 0x04, 0x40, 0x7E, 0x20, 0x1E, 0x20, 0x06, 0x02, 0x7E, 0x02, 0x02, 0x99, 0xA5, 0xE7, 0xA5, 0x99, 0x1C, 0x2A, 0x49, 0x2A, 0x1C, 0x4C, 0x72, 0x01, 0x72, 0x4C, 0x30, 0x4A, 0x4D, 0x4D, 0x30, 0x30, 0x48, 0x78, 0x48, 0x30, 0xBC, 0x62, 0x5A, 0x46, 0x3D, 0x3E, 0x49, 0x49, 0x49, 0x00, 0x7E, 0x01, 0x01, 0x01, 0x7E, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x44, 0x44, 0x5F, 0x44, 0x44, 0x40, 0x51, 0x4A, 0x44, 0x40, 0x40, 0x44, 0x4A, 0x51, 0x40, 0x00, 0x00, 0xFF, 0x01, 0x03, 0xE0, 0x80, 0xFF, 0x00, 0x00, 0x08, 0x08, 0x6B, 0x6B, 0x08, 0x36, 0x12, 0x36, 0x24, 0x36, 0x06, 0x0F, 0x09, 0x0F, 0x06, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x30, 0x40, 0xFF, 0x01, 0x01, 0x00, 0x1F, 0x01, 0x01, 0x1E, 0x00, 0x19, 0x1D, 0x17, 0x12, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/drivers/qwiic/util/font8x16.h b/drivers/qwiic/util/font8x16.h
deleted file mode 100644
index 4d3c2378662..00000000000
--- a/drivers/qwiic/util/font8x16.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/******************************************************************************
-font8x16.h
-Definition for medium font
-
-This file was imported from the MicroView library, written by GeekAmmo
-(https://github.com/geekammo/MicroView-Arduino-Library), and released under
-the terms of the GNU General Public License as published by the Free Software
-Foundation, either version 3 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-
-Modified by:
-Emil Varughese @ Edwin Robotics Pvt. Ltd.
-July 27, 2015
-https://github.com/emil01/SparkFun_Micro_OLED_Arduino_Library/
-******************************************************************************/
-#pragma once
-
-#include "progmem.h"
-
-static const unsigned char font8x16[] PROGMEM = {
- // first row defines - FONTWIDTH, FONTHEIGHT, ASCII START CHAR, TOTAL CHARACTERS, FONT MAP WIDTH HIGH, FONT MAP WIDTH LOW (2,56 meaning 256)
- 8, 16, 32, 96, 2, 56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xBE, 0x90, 0xD0, 0xBE, 0x90, 0x00, 0x00, 0x1C, 0x62, 0xFF, 0xC2, 0x80, 0x00, 0x00, 0x0C, 0x12, 0x92, 0x4C, 0xB0, 0x88, 0x06, 0x00, 0x80, 0x7C, 0x62, 0xB2, 0x1C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x18, 0x04, 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, 0x02, 0x04, 0x18, 0xE0, 0x00, 0x00, 0x00, 0x24, 0x18, 0x7E, 0x18, 0x24, 0x00, 0x00, 0x80, 0x80, 0x80, 0xF0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x06, 0x00, 0x00, 0xF8, 0x04, 0xC2, 0x32, 0x0C, 0xF8, 0x00, 0x00, 0x00, 0x04, 0x04, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x82, 0x42, 0x22,
- 0x1C, 0x00, 0x00, 0x00, 0x02, 0x22, 0x22, 0x22, 0xDC, 0x00, 0x00, 0xC0, 0xA0, 0x98, 0x84, 0xFE, 0x80, 0x80, 0x00, 0x00, 0x1E, 0x12, 0x12, 0x22, 0xC2, 0x00, 0x00, 0xF8, 0x44, 0x22, 0x22, 0x22, 0xC0, 0x00, 0x00, 0x00, 0x02, 0x02, 0xC2, 0x32, 0x0A, 0x06, 0x00, 0x00, 0x8C, 0x52, 0x22, 0x52, 0x8C, 0x00, 0x00, 0x3C, 0x42, 0x42, 0x42, 0x26, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x02, 0x82, 0x42, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x0F, 0x04, 0x03, 0x00, 0x00, 0x04, 0x02, 0x01, 0x03, 0x04, 0x04, 0x03, 0x00,
- 0x03, 0x04, 0x04, 0x04, 0x05, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x08, 0x10, 0x10, 0x00, 0x00, 0x00, 0x10, 0x10, 0x08, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x04, 0x07, 0x04, 0x04, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x04, 0x04,
- 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x04, 0x72, 0x8A, 0xFA, 0x84, 0x78, 0x00, 0x00, 0xC0, 0x38, 0x06, 0x38, 0xC0, 0x00, 0x00, 0x00, 0xFE, 0x22, 0x22, 0x22, 0xDC, 0x00, 0x00, 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x00, 0x00, 0x00, 0xFE, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0xFE, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0xF8, 0x04, 0x02, 0x02, 0x22, 0xE2, 0x00, 0x00, 0xFE, 0x20, 0x20, 0x20, 0x20, 0xFE, 0x00, 0x00, 0x00, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0xFE, 0x00, 0x00, 0xFE, 0x40, 0xB0, 0x08, 0x04, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xFE, 0x0C, 0x70, 0x80, 0x70, 0x0C, 0xFE, 0x00, 0xFE, 0x0C, 0x30, 0xC0, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x04, 0x02, 0x02, 0x04, 0xF8, 0x00, 0x00, 0xFE, 0x42, 0x42, 0x42, 0x22, 0x1C, 0x00, 0x00, 0xF8, 0x04, 0x02, 0x02, 0x04, 0xF8, 0x00, 0x00, 0x00, 0xFE, 0x42, 0x42, 0xA2, 0x1C, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x42, 0x42, 0x80, 0x00, 0x00, 0x02, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x02, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x06, 0x38, 0xC0, 0x00, 0xC0, 0x38, 0x06, 0x00, 0x3E, 0xC0, 0xF0, 0x0E, 0xF0, 0xC0, 0x3E, 0x00, 0x00, 0x06, 0x98, 0x60, 0x98, 0x06, 0x00, 0x00, 0x00, 0x06, 0x18, 0xE0, 0x18, 0x06, 0x00, 0x00, 0x02, 0x02, 0xC2, 0x32, 0x0A, 0x06, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x06, 0x18, 0x60, 0x80, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0xFE, 0x00, 0x00, 0x00, 0x40, 0x30, 0x0C, 0x0C, 0x30, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
- 0x02, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x00, 0x00, 0x07, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x07, 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x04, 0x07, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0C, 0x12, 0x11, 0x10, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04,
- 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x10, 0x10, 0x10, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, 0x00, 0xFE, 0x20, 0x10, 0x10, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0xE0, 0x10, 0x10, 0x10, 0xFE, 0x00, 0x00, 0x00, 0xE0, 0x90, 0x90, 0x90, 0xE0, 0x00, 0x00, 0x00, 0x20, 0xFC, 0x22, 0x22, 0x22, 0x02,
- 0x00, 0x00, 0xE0, 0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, 0x00, 0xFE, 0x20, 0x10, 0x10, 0xE0, 0x00, 0x00, 0x10, 0x10, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0xF2, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0x02, 0x02, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x20, 0x10, 0xF0, 0x20, 0x10, 0xF0, 0x00, 0x00, 0xF0, 0x20, 0x10, 0x10, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0x10, 0x10, 0x10, 0xE0, 0x00, 0x00, 0x00, 0xF0, 0x20, 0x10, 0x10, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x20, 0x10, 0x10, 0x70, 0x00, 0x00, 0x00, 0x60, 0x90, 0x90, 0x90, 0x20, 0x00, 0x00, 0x00, 0x20, 0x20, 0xFC, 0x20, 0x20, 0x20, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x80, 0x70, 0x00, 0x00, 0xF0, 0x00, 0xC0, 0x30, 0xC0, 0x00, 0xF0, 0x00, 0x00, 0x30, 0xC0, 0xC0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x80, 0x70, 0x00, 0x00, 0x00, 0x10,
- 0x10, 0x90, 0x50, 0x30, 0x00, 0x00, 0x00, 0x80, 0x80, 0x7E, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x7E, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x02, 0x07, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x02, 0x07, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x24, 0x24, 0x22, 0x1F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00,
- 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x3F, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x02, 0x3F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x00, 0x00, 0x03, 0x04, 0x04, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x03, 0x00, 0x00, 0x00, 0x01, 0x06, 0x01, 0x00, 0x01, 0x06, 0x01, 0x00, 0x00, 0x06, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00, 0x20, 0x20, 0x31, 0x0E, 0x03, 0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/drivers/sensors/adns5050.c b/drivers/sensors/adns5050.c
index 254ef2ee87e..c23d24d5af5 100644
--- a/drivers/sensors/adns5050.c
+++ b/drivers/sensors/adns5050.c
@@ -20,81 +20,95 @@
#include "adns5050.h"
#include "wait.h"
#include "debug.h"
-#include "print.h"
#include "gpio.h"
-#ifndef OPTIC_ROTATED
-# define OPTIC_ROTATED false
-#endif
-
-// Definitions for the ADNS serial line.
-#ifndef ADNS_SCLK_PIN
-# define ADNS_SCLK_PIN B7
-#endif
-
-#ifndef ADNS_SDIO_PIN
-# define ADNS_SDIO_PIN C6
-#endif
-
-#ifndef ADNS_CS_PIN
-# define ADNS_CS_PIN B4
-#endif
-
-#ifdef CONSOLE_ENABLE
-void print_byte(uint8_t byte) { dprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0')); }
-#endif
-
-// Initialize the ADNS serial pins.
-void adns_init(void) {
- setPinOutput(ADNS_SCLK_PIN);
- setPinOutput(ADNS_SDIO_PIN);
- setPinOutput(ADNS_CS_PIN);
+// Registers
+// clang-format off
+#define REG_PRODUCT_ID 0x00
+#define REG_REVISION_ID 0x01
+#define REG_MOTION 0x02
+#define REG_DELTA_X 0x03
+#define REG_DELTA_Y 0x04
+#define REG_SQUAL 0x05
+#define REG_SHUTTER_UPPER 0x06
+#define REG_SHUTTER_LOWER 0x07
+#define REG_MAXIMUM_PIXEL 0x08
+#define REG_PIXEL_SUM 0x09
+#define REG_MINIMUM_PIXEL 0x0a
+#define REG_PIXEL_GRAB 0x0b
+#define REG_MOUSE_CONTROL 0x0d
+#define REG_MOUSE_CONTROL2 0x19
+#define REG_LED_DC_MODE 0x22
+#define REG_CHIP_RESET 0x3a
+#define REG_PRODUCT_ID2 0x3e
+#define REG_INV_REV_ID 0x3f
+#define REG_MOTION_BURST 0x63
+// clang-format on
+
+void adns5050_init(void) {
+ // Initialize the ADNS serial pins.
+ setPinOutput(ADNS5050_SCLK_PIN);
+ setPinOutput(ADNS5050_SDIO_PIN);
+ setPinOutput(ADNS5050_CS_PIN);
+
+ // reboot the adns.
+ // if the adns hasn't initialized yet, this is harmless.
+ adns5050_write_reg(REG_CHIP_RESET, 0x5a);
+
+ // wait maximum time before adns is ready.
+ // this ensures that the adns is actuall ready after reset.
+ wait_ms(55);
+
+ // read a burst from the adns and then discard it.
+ // gets the adns ready for write commands
+ // (for example, setting the dpi).
+ adns5050_read_burst();
}
// Perform a synchronization with the ADNS.
// Just as with the serial protocol, this is used by the slave to send a
// synchronization signal to the master.
-void adns_sync(void) {
- writePinLow(ADNS_CS_PIN);
+void adns5050_sync(void) {
+ writePinLow(ADNS5050_CS_PIN);
wait_us(1);
- writePinHigh(ADNS_CS_PIN);
+ writePinHigh(ADNS5050_CS_PIN);
}
-void adns_cs_select(void) { writePinLow(ADNS_CS_PIN); }
+void adns5050_cs_select(void) { writePinLow(ADNS5050_CS_PIN); }
-void adns_cs_deselect(void) { writePinHigh(ADNS_CS_PIN); }
+void adns5050_cs_deselect(void) { writePinHigh(ADNS5050_CS_PIN); }
-uint8_t adns_serial_read(void) {
- setPinInput(ADNS_SDIO_PIN);
+uint8_t adns5050_serial_read(void) {
+ setPinInput(ADNS5050_SDIO_PIN);
uint8_t byte = 0;
for (uint8_t i = 0; i < 8; ++i) {
- writePinLow(ADNS_SCLK_PIN);
+ writePinLow(ADNS5050_SCLK_PIN);
wait_us(1);
- byte = (byte << 1) | readPin(ADNS_SDIO_PIN);
+ byte = (byte << 1) | readPin(ADNS5050_SDIO_PIN);
- writePinHigh(ADNS_SCLK_PIN);
+ writePinHigh(ADNS5050_SCLK_PIN);
wait_us(1);
}
return byte;
}
-void adns_serial_write(uint8_t data) {
- setPinOutput(ADNS_SDIO_PIN);
+void adns5050_serial_write(uint8_t data) {
+ setPinOutput(ADNS5050_SDIO_PIN);
for (int8_t b = 7; b >= 0; b--) {
- writePinLow(ADNS_SCLK_PIN);
+ writePinLow(ADNS5050_SCLK_PIN);
if (data & (1 << b))
- writePinHigh(ADNS_SDIO_PIN);
+ writePinHigh(ADNS5050_SDIO_PIN);
else
- writePinLow(ADNS_SDIO_PIN);
+ writePinLow(ADNS5050_SDIO_PIN);
wait_us(2);
- writePinHigh(ADNS_SCLK_PIN);
+ writePinHigh(ADNS5050_SCLK_PIN);
}
// tSWR. See page 15 of the ADNS spec sheet.
@@ -108,17 +122,17 @@ void adns_serial_write(uint8_t data) {
// Read a byte of data from a register on the ADNS.
// Don't forget to use the register map (as defined in the header file).
-uint8_t adns_read_reg(uint8_t reg_addr) {
- adns_cs_select();
+uint8_t adns5050_read_reg(uint8_t reg_addr) {
+ adns5050_cs_select();
- adns_serial_write(reg_addr);
+ adns5050_serial_write(reg_addr);
// We don't need a minimum tSRAD here. That's because a 4ms wait time is
- // already included in adns_serial_write(), so we're good.
+ // already included in adns5050_serial_write(), so we're good.
// See page 10 and 15 of the ADNS spec sheet.
// wait_us(4);
- uint8_t byte = adns_serial_read();
+ uint8_t byte = adns5050_serial_read();
// tSRW & tSRR. See page 15 of the ADNS spec sheet.
// Technically, this is only necessary if the next operation is an SDIO
@@ -126,38 +140,38 @@ uint8_t adns_read_reg(uint8_t reg_addr) {
// Honestly, this wait could probably be removed.
wait_us(1);
- adns_cs_deselect();
+ adns5050_cs_deselect();
return byte;
}
-void adns_write_reg(uint8_t reg_addr, uint8_t data) {
- adns_cs_select();
- adns_serial_write(0b10000000 | reg_addr);
- adns_serial_write(data);
- adns_cs_deselect();
+void adns5050_write_reg(uint8_t reg_addr, uint8_t data) {
+ adns5050_cs_select();
+ adns5050_serial_write(0b10000000 | reg_addr);
+ adns5050_serial_write(data);
+ adns5050_cs_deselect();
}
-report_adns_t adns_read_burst(void) {
- adns_cs_select();
+report_adns5050_t adns5050_read_burst(void) {
+ adns5050_cs_select();
- report_adns_t data;
+ report_adns5050_t data;
data.dx = 0;
data.dy = 0;
- adns_serial_write(REG_MOTION_BURST);
+ adns5050_serial_write(REG_MOTION_BURST);
// We don't need a minimum tSRAD here. That's because a 4ms wait time is
- // already included in adns_serial_write(), so we're good.
+ // already included in adns5050_serial_write(), so we're good.
// See page 10 and 15 of the ADNS spec sheet.
// wait_us(4);
- uint8_t x = adns_serial_read();
- uint8_t y = adns_serial_read();
+ uint8_t x = adns5050_serial_read();
+ uint8_t y = adns5050_serial_read();
// Burst mode returns a bunch of other shit that we don't really need.
// Setting CS to high ends burst mode early.
- adns_cs_deselect();
+ adns5050_cs_deselect();
data.dx = convert_twoscomp(x);
data.dy = convert_twoscomp(y);
@@ -175,12 +189,21 @@ int8_t convert_twoscomp(uint8_t data) {
}
// Don't forget to use the definitions for CPI in the header file.
-void adns_set_cpi(uint8_t cpi) { adns_write_reg(REG_MOUSE_CONTROL2, cpi); }
+void adns5050_set_cpi(uint16_t cpi) {
+ uint8_t cpival = constrain((cpi / 125), 0x1, 0xD); // limits to 0--119
+
+ adns5050_write_reg(REG_MOUSE_CONTROL2, 0b10000 | cpival);
+}
+
+uint16_t adns5050_get_cpi(void) {
+ uint8_t cpival = adns5050_read_reg(REG_MOUSE_CONTROL2);
+ return (uint16_t)((cpival & 0b10000) * 125);
+}
-bool adns_check_signature(void) {
- uint8_t pid = adns_read_reg(REG_PRODUCT_ID);
- uint8_t rid = adns_read_reg(REG_REVISION_ID);
- uint8_t pid2 = adns_read_reg(REG_PRODUCT_ID2);
+bool adns5050_check_signature(void) {
+ uint8_t pid = adns5050_read_reg(REG_PRODUCT_ID);
+ uint8_t rid = adns5050_read_reg(REG_REVISION_ID);
+ uint8_t pid2 = adns5050_read_reg(REG_PRODUCT_ID2);
return (pid == 0x12 && rid == 0x01 && pid2 == 0x26);
}
diff --git a/drivers/sensors/adns5050.h b/drivers/sensors/adns5050.h
index 5e9edc29624..e45a2501964 100644
--- a/drivers/sensors/adns5050.h
+++ b/drivers/sensors/adns5050.h
@@ -21,59 +21,52 @@
#include
-// Registers
-#define REG_PRODUCT_ID 0x00
-#define REG_REVISION_ID 0x01
-#define REG_MOTION 0x02
-#define REG_DELTA_X 0x03
-#define REG_DELTA_Y 0x04
-#define REG_SQUAL 0x05
-#define REG_SHUTTER_UPPER 0x06
-#define REG_SHUTTER_LOWER 0x07
-#define REG_MAXIMUM_PIXEL 0x08
-#define REG_PIXEL_SUM 0x09
-#define REG_MINIMUM_PIXEL 0x0a
-#define REG_PIXEL_GRAB 0x0b
-#define REG_MOUSE_CONTROL 0x0d
-#define REG_MOUSE_CONTROL2 0x19
-#define REG_LED_DC_MODE 0x22
-#define REG_CHIP_RESET 0x3a
-#define REG_PRODUCT_ID2 0x3e
-#define REG_INV_REV_ID 0x3f
-#define REG_MOTION_BURST 0x63
-
// CPI values
-#define CPI125 0x11
-#define CPI250 0x12
-#define CPI375 0x13
-#define CPI500 0x14
-#define CPI625 0x15
-#define CPI750 0x16
-#define CPI875 0x17
+// clang-format off
+#define CPI125 0x11
+#define CPI250 0x12
+#define CPI375 0x13
+#define CPI500 0x14
+#define CPI625 0x15
+#define CPI750 0x16
+#define CPI875 0x17
#define CPI1000 0x18
#define CPI1125 0x19
#define CPI1250 0x1a
#define CPI1375 0x1b
+// clang-format on
+
+#define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)))
+
+// Definitions for the ADNS serial line.
+#ifndef ADNS5050_SCLK_PIN
+# error "No clock pin defined -- missing ADNS5050_SCLK_PIN"
+#endif
+
+#ifndef ADNS5050_SDIO_PIN
+# error "No data pin defined -- missing ADNS5050_SDIO_PIN"
+#endif
-#ifdef CONSOLE_ENABLE
-void print_byte(uint8_t byte);
+#ifndef ADNS5050_CS_PIN
+# error "No chip select pin defined -- missing ADNS5050_CS_PIN"
#endif
typedef struct {
int8_t dx;
int8_t dy;
-} report_adns_t;
+} report_adns5050_t;
// A bunch of functions to implement the ADNS5050-specific serial protocol.
// Note that the "serial.h" driver is insufficient, because it does not
// manually manipulate a serial clock signal.
-void adns_init(void);
-void adns_sync(void);
-uint8_t adns_serial_read(void);
-void adns_serial_write(uint8_t data);
-uint8_t adns_read_reg(uint8_t reg_addr);
-void adns_write_reg(uint8_t reg_addr, uint8_t data);
-report_adns_t adns_read_burst(void);
-int8_t convert_twoscomp(uint8_t data);
-void adns_set_cpi(uint8_t cpi);
-bool adns_check_signature(void);
+void adns5050_init(void);
+void adns5050_sync(void);
+uint8_t adns5050_serial_read(void);
+void adns5050_serial_write(uint8_t data);
+uint8_t adns5050_read_reg(uint8_t reg_addr);
+void adns5050_write_reg(uint8_t reg_addr, uint8_t data);
+report_adns5050_t adns5050_read_burst(void);
+void adns5050_set_cpi(uint16_t cpi);
+uint16_t adns5050_get_cpi(void);
+int8_t convert_twoscomp(uint8_t data);
+bool adns5050_check_signature(void);
diff --git a/drivers/sensors/adns9800.c b/drivers/sensors/adns9800.c
index b4f683452cd..c52f9918045 100644
--- a/drivers/sensors/adns9800.c
+++ b/drivers/sensors/adns9800.c
@@ -15,83 +15,80 @@
*/
#include "spi_master.h"
-#include "quantum.h"
#include "adns9800_srom_A6.h"
#include "adns9800.h"
+#include "wait.h"
// registers
-#define REG_Product_ID 0x00
-#define REG_Revision_ID 0x01
-#define REG_Motion 0x02
-#define REG_Delta_X_L 0x03
-#define REG_Delta_X_H 0x04
-#define REG_Delta_Y_L 0x05
-#define REG_Delta_Y_H 0x06
-#define REG_SQUAL 0x07
-#define REG_Pixel_Sum 0x08
-#define REG_Maximum_Pixel 0x09
-#define REG_Minimum_Pixel 0x0a
-#define REG_Shutter_Lower 0x0b
-#define REG_Shutter_Upper 0x0c
-#define REG_Frame_Period_Lower 0x0d
-#define REG_Frame_Period_Upper 0x0e
-#define REG_Configuration_I 0x0f
-#define REG_Configuration_II 0x10
-#define REG_Frame_Capture 0x12
-#define REG_SROM_Enable 0x13
-#define REG_Run_Downshift 0x14
-#define REG_Rest1_Rate 0x15
-#define REG_Rest1_Downshift 0x16
-#define REG_Rest2_Rate 0x17
-#define REG_Rest2_Downshift 0x18
-#define REG_Rest3_Rate 0x19
+// clang-format off
+#define REG_Product_ID 0x00
+#define REG_Revision_ID 0x01
+#define REG_Motion 0x02
+#define REG_Delta_X_L 0x03
+#define REG_Delta_X_H 0x04
+#define REG_Delta_Y_L 0x05
+#define REG_Delta_Y_H 0x06
+#define REG_SQUAL 0x07
+#define REG_Pixel_Sum 0x08
+#define REG_Maximum_Pixel 0x09
+#define REG_Minimum_Pixel 0x0a
+#define REG_Shutter_Lower 0x0b
+#define REG_Shutter_Upper 0x0c
+#define REG_Frame_Period_Lower 0x0d
+#define REG_Frame_Period_Upper 0x0e
+#define REG_Configuration_I 0x0f
+#define REG_Configuration_II 0x10
+#define REG_Frame_Capture 0x12
+#define REG_SROM_Enable 0x13
+#define REG_Run_Downshift 0x14
+#define REG_Rest1_Rate 0x15
+#define REG_Rest1_Downshift 0x16
+#define REG_Rest2_Rate 0x17
+#define REG_Rest2_Downshift 0x18
+#define REG_Rest3_Rate 0x19
#define REG_Frame_Period_Max_Bound_Lower 0x1a
#define REG_Frame_Period_Max_Bound_Upper 0x1b
#define REG_Frame_Period_Min_Bound_Lower 0x1c
#define REG_Frame_Period_Min_Bound_Upper 0x1d
-#define REG_Shutter_Max_Bound_Lower 0x1e
-#define REG_Shutter_Max_Bound_Upper 0x1f
-#define REG_LASER_CTRL0 0x20
-#define REG_Observation 0x24
-#define REG_Data_Out_Lower 0x25
-#define REG_Data_Out_Upper 0x26
-#define REG_SROM_ID 0x2a
-#define REG_Lift_Detection_Thr 0x2e
-#define REG_Configuration_V 0x2f
-#define REG_Configuration_IV 0x39
-#define REG_Power_Up_Reset 0x3a
-#define REG_Shutdown 0x3b
-#define REG_Inverse_Product_ID 0x3f
-#define REG_Motion_Burst 0x50
-#define REG_SROM_Load_Burst 0x62
-#define REG_Pixel_Burst 0x64
-
-#define ADNS_CLOCK_SPEED 2000000
-#define MIN_CPI 200
-#define MAX_CPI 8200
-#define CPI_STEP 200
-#define CLAMP_CPI(value) value MAX_CPI ? MAX_CPI : value
-#define SPI_MODE 3
-#define SPI_DIVISOR (F_CPU / ADNS_CLOCK_SPEED)
+#define REG_Shutter_Max_Bound_Lower 0x1e
+#define REG_Shutter_Max_Bound_Upper 0x1f
+#define REG_LASER_CTRL0 0x20
+#define REG_Observation 0x24
+#define REG_Data_Out_Lower 0x25
+#define REG_Data_Out_Upper 0x26
+#define REG_SROM_ID 0x2a
+#define REG_Lift_Detection_Thr 0x2e
+#define REG_Configuration_V 0x2f
+#define REG_Configuration_IV 0x39
+#define REG_Power_Up_Reset 0x3a
+#define REG_Shutdown 0x3b
+#define REG_Inverse_Product_ID 0x3f
+#define REG_Motion_Burst 0x50
+#define REG_SROM_Load_Burst 0x62
+#define REG_Pixel_Burst 0x64
+
+#define MIN_CPI 200
+#define MAX_CPI 8200
+#define CPI_STEP 200
+#define CLAMP_CPI(value) value MAX_CPI ? MAX_CPI : value
#define US_BETWEEN_WRITES 120
-#define US_BETWEEN_READS 20
-#define US_BEFORE_MOTION 100
-#define MSB1 0x80
+#define US_BETWEEN_READS 20
+#define US_BEFORE_MOTION 100
+#define MSB1 0x80
+// clang-format on
-extern const uint8_t firmware_data[];
+void adns9800_spi_start(void) { spi_start(ADNS9800_CS_PIN, false, ADNS9800_SPI_MODE, ADNS9800_SPI_DIVISOR); }
-void adns_spi_start(void) { spi_start(SPI_SS_PIN, false, SPI_MODE, SPI_DIVISOR); }
-
-void adns_write(uint8_t reg_addr, uint8_t data) {
- adns_spi_start();
+void adns9800_write(uint8_t reg_addr, uint8_t data) {
+ adns9800_spi_start();
spi_write(reg_addr | MSB1);
spi_write(data);
spi_stop();
wait_us(US_BETWEEN_WRITES);
}
-uint8_t adns_read(uint8_t reg_addr) {
- adns_spi_start();
+uint8_t adns9800_read(uint8_t reg_addr) {
+ adns9800_spi_start();
spi_write(reg_addr & 0x7f);
uint8_t data = spi_read();
spi_stop();
@@ -100,39 +97,39 @@ uint8_t adns_read(uint8_t reg_addr) {
return data;
}
-void adns_init() {
- setPinOutput(SPI_SS_PIN);
+void adns9800_init() {
+ setPinOutput(ADNS9800_CS_PIN);
spi_init();
// reboot
- adns_write(REG_Power_Up_Reset, 0x5a);
+ adns9800_write(REG_Power_Up_Reset, 0x5a);
wait_ms(50);
// read registers and discard
- adns_read(REG_Motion);
- adns_read(REG_Delta_X_L);
- adns_read(REG_Delta_X_H);
- adns_read(REG_Delta_Y_L);
- adns_read(REG_Delta_Y_H);
+ adns9800_read(REG_Motion);
+ adns9800_read(REG_Delta_X_L);
+ adns9800_read(REG_Delta_X_H);
+ adns9800_read(REG_Delta_Y_L);
+ adns9800_read(REG_Delta_Y_H);
// upload firmware
// 3k firmware mode
- adns_write(REG_Configuration_IV, 0x02);
+ adns9800_write(REG_Configuration_IV, 0x02);
// enable initialisation
- adns_write(REG_SROM_Enable, 0x1d);
+ adns9800_write(REG_SROM_Enable, 0x1d);
// wait a frame
wait_ms(10);
// start SROM download
- adns_write(REG_SROM_Enable, 0x18);
+ adns9800_write(REG_SROM_Enable, 0x18);
// write the SROM file
- adns_spi_start();
+ adns9800_spi_start();
spi_write(REG_SROM_Load_Burst | 0x80);
wait_us(15);
@@ -140,7 +137,7 @@ void adns_init() {
// send all bytes of the firmware
unsigned char c;
for (int i = 0; i < FIRMWARE_LENGTH; i++) {
- c = (unsigned char)pgm_read_byte(firmware_data + i);
+ c = (unsigned char)pgm_read_byte(adns9800_firmware_data + i);
spi_write(c);
wait_us(15);
}
@@ -150,18 +147,30 @@ void adns_init() {
wait_ms(10);
// enable laser
- uint8_t laser_ctrl0 = adns_read(REG_LASER_CTRL0);
- adns_write(REG_LASER_CTRL0, laser_ctrl0 & 0xf0);
+ uint8_t laser_ctrl0 = adns9800_read(REG_LASER_CTRL0);
+ adns9800_write(REG_LASER_CTRL0, laser_ctrl0 & 0xf0);
+
+ adns9800_set_cpi(ADNS9800_CPI);
}
-config_adns_t adns_get_config(void) {
- uint8_t config_1 = adns_read(REG_Configuration_I);
- return (config_adns_t){(config_1 & 0xFF) * CPI_STEP};
+config_adns9800_t adns9800_get_config(void) {
+ uint8_t config_1 = adns9800_read(REG_Configuration_I);
+ return (config_adns9800_t){(config_1 & 0xFF) * CPI_STEP};
}
-void adns_set_config(config_adns_t config) {
+void adns9800_set_config(config_adns9800_t config) {
uint8_t config_1 = (CLAMP_CPI(config.cpi) / CPI_STEP) & 0xFF;
- adns_write(REG_Configuration_I, config_1);
+ adns9800_write(REG_Configuration_I, config_1);
+}
+
+uint16_t adns9800_get_cpi(void) {
+ uint8_t config_1 = adns9800_read(REG_Configuration_I);
+ return (uint16_t){(config_1 & 0xFF) * CPI_STEP};
+}
+
+void adns9800_set_cpi(uint16_t cpi) {
+ uint8_t config_1 = (CLAMP_CPI(cpi) / CPI_STEP) & 0xFF;
+ adns9800_write(REG_Configuration_I, config_1);
}
static int16_t convertDeltaToInt(uint8_t high, uint8_t low) {
@@ -174,10 +183,10 @@ static int16_t convertDeltaToInt(uint8_t high, uint8_t low) {
return twos_comp;
}
-report_adns_t adns_get_report(void) {
- report_adns_t report = {0, 0};
+report_adns9800_t adns9800_get_report(void) {
+ report_adns9800_t report = {0, 0};
- adns_spi_start();
+ adns9800_spi_start();
// start burst mode
spi_write(REG_Motion_Burst & 0x7f);
diff --git a/drivers/sensors/adns9800.h b/drivers/sensors/adns9800.h
index d19ded4012f..e75a869c03d 100644
--- a/drivers/sensors/adns9800.h
+++ b/drivers/sensors/adns9800.h
@@ -18,18 +18,48 @@
#include
+#ifndef ADNS9800_CPI
+# define ADNS9800_CPI 1600
+#endif
+
+#ifndef ADNS9800_CLOCK_SPEED
+# define ADNS9800_CLOCK_SPEED 2000000
+#endif
+
+#ifndef ADNS9800_SPI_LSBFIRST
+# define ADNS9800_SPI_LSBFIRST false
+#endif
+
+#ifndef ADNS9800_SPI_MODE
+# define ADNS9800_SPI_MODE 3
+#endif
+
+#ifndef ADNS9800_SPI_DIVISOR
+# ifdef __AVR__
+# define ADNS9800_SPI_DIVISOR (F_CPU / ADNS9800_CLOCK_SPEED)
+# else
+# define ADNS9800_SPI_DIVISOR 64
+# endif
+#endif
+
+#ifndef ADNS9800_CS_PIN
+# error "No chip select pin defined -- missing ADNS9800_CS_PIN"
+#endif
+
typedef struct {
/* 200 - 8200 CPI supported */
uint16_t cpi;
-} config_adns_t;
+} config_adns9800_t;
typedef struct {
int16_t x;
int16_t y;
-} report_adns_t;
+} report_adns9800_t;
-void adns_init(void);
-config_adns_t adns_get_config(void);
-void adns_set_config(config_adns_t);
+void adns9800_init(void);
+config_adns9800_t adns9800_get_config(void);
+void adns9800_set_config(config_adns9800_t);
+uint16_t adns9800_get_cpi(void);
+void adns9800_set_cpi(uint16_t cpi);
/* Reads and clears the current delta values on the ADNS sensor */
-report_adns_t adns_get_report(void);
+report_adns9800_t adns9800_get_report(void);
diff --git a/drivers/sensors/adns9800_srom_A6.h b/drivers/sensors/adns9800_srom_A6.h
index e698a401b94..d86ecbbd9eb 100644
--- a/drivers/sensors/adns9800_srom_A6.h
+++ b/drivers/sensors/adns9800_srom_A6.h
@@ -6,7 +6,7 @@
// clang-format off
-const uint8_t firmware_data[FIRMWARE_LENGTH] PROGMEM = {
+const uint8_t adns9800_firmware_data[FIRMWARE_LENGTH] PROGMEM = {
0x03, 0xA6, 0x68, 0x1E, 0x7D, 0x10, 0x7E, 0x7E, 0x5F, 0x1C, 0xB8, 0xF2, 0x47, 0x0C, 0x7B, 0x74,
0x4B, 0x14, 0x8B, 0x75, 0x66, 0x51, 0x0B, 0x8C, 0x76, 0x74, 0x4B, 0x14, 0xAA, 0xD6, 0x0F, 0x9C,
0xBA, 0xF6, 0x6E, 0x3F, 0xDD, 0x38, 0xD5, 0x02, 0x80, 0x9B, 0x82, 0x6D, 0x58, 0x13, 0xA4, 0xAB,
diff --git a/drivers/sensors/analog_joystick.c b/drivers/sensors/analog_joystick.c
new file mode 100644
index 00000000000..0f4d1d7a4c2
--- /dev/null
+++ b/drivers/sensors/analog_joystick.c
@@ -0,0 +1,94 @@
+/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "analog_joystick.h"
+#include "analog.h"
+#include "gpio.h"
+#include "wait.h"
+
+// Set Parameters
+uint16_t minAxisValue = ANALOG_JOYSTICK_AXIS_MIN;
+uint16_t maxAxisValue = ANALOG_JOYSTICK_AXIS_MAX;
+
+uint8_t maxCursorSpeed = ANALOG_JOYSTICK_SPEED_MAX;
+uint8_t speedRegulator = ANALOG_JOYSTICK_SPEED_REGULATOR; // Lower Values Create Faster Movement
+
+int16_t xOrigin, yOrigin;
+
+uint16_t lastCursor = 0;
+
+int16_t axisCoordinate(uint8_t pin, uint16_t origin) {
+ int8_t direction;
+ int16_t distanceFromOrigin;
+ int16_t range;
+
+ int16_t position = analogReadPin(pin);
+
+ if (origin == position) {
+ return 0;
+ } else if (origin > position) {
+ distanceFromOrigin = origin - position;
+ range = origin - minAxisValue;
+ direction = -1;
+ } else {
+ distanceFromOrigin = position - origin;
+ range = maxAxisValue - origin;
+ direction = 1;
+ }
+
+ float percent = (float)distanceFromOrigin / range;
+ int16_t coordinate = (int16_t)(percent * 100);
+ if (coordinate < 0) {
+ return 0;
+ } else if (coordinate > 100) {
+ return 100 * direction;
+ } else {
+ return coordinate * direction;
+ }
+}
+
+int8_t axisToMouseComponent(uint8_t pin, int16_t origin, uint8_t maxSpeed) {
+ int16_t coordinate = axisCoordinate(pin, origin);
+ if (coordinate != 0) {
+ float percent = (float)coordinate / 100;
+ return percent * maxCursorSpeed * (abs(coordinate) / speedRegulator);
+ } else {
+ return 0;
+ }
+}
+
+report_analog_joystick_t analog_joystick_read(void) {
+ report_analog_joystick_t report = {0};
+
+ if (timer_elapsed(lastCursor) > ANALOG_JOYSTICK_READ_INTERVAL) {
+ lastCursor = timer_read();
+ report.x = axisToMouseComponent(ANALOG_JOYSTICK_X_AXIS_PIN, xOrigin, maxCursorSpeed);
+ report.y = axisToMouseComponent(ANALOG_JOYSTICK_Y_AXIS_PIN, yOrigin, maxCursorSpeed);
+ }
+#ifdef ANALOG_JOYSTICK_CLICK_PIN
+ report.button = !readPin(ANALOG_JOYSTICK_CLICK_PIN);
+#endif
+ return report;
+}
+
+void analog_joystick_init(void) {
+#ifdef ANALOG_JOYSTICK_CLICK_PIN
+ setPinInputHigh(ANALOG_JOYSTICK_CLICK_PIN);
+#endif
+ // Account for drift
+ xOrigin = analogReadPin(ANALOG_JOYSTICK_X_AXIS_PIN);
+ yOrigin = analogReadPin(ANALOG_JOYSTICK_Y_AXIS_PIN);
+}
diff --git a/drivers/sensors/analog_joystick.h b/drivers/sensors/analog_joystick.h
new file mode 100644
index 00000000000..6892a08817f
--- /dev/null
+++ b/drivers/sensors/analog_joystick.h
@@ -0,0 +1,51 @@
+/* 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
+#include
+
+#ifndef ANALOG_JOYSTICK_X_AXIS_PIN
+# error No pin specified for X Axis
+#endif
+#ifndef ANALOG_JOYSTICK_Y_AXIS_PIN
+# error No pin specified for Y Axis
+#endif
+
+#ifndef ANALOG_JOYSTICK_AXIS_MIN
+# define ANALOG_JOYSTICK_AXIS_MIN 0
+#endif
+#ifndef ANALOG_JOYSTICK_AXIS_MAX
+# define ANALOG_JOYSTICK_AXIS_MAX 1023
+#endif
+#ifndef ANALOG_JOYSTICK_SPEED_REGULATOR
+# define ANALOG_JOYSTICK_SPEED_REGULATOR 20
+#endif
+#ifndef ANALOG_JOYSTICK_READ_INTERVAL
+# define ANALOG_JOYSTICK_READ_INTERVAL 10
+#endif
+#ifndef ANALOG_JOYSTICK_SPEED_MAX
+# define ANALOG_JOYSTICK_SPEED_MAX 2
+#endif
+
+typedef struct {
+ int8_t x;
+ int8_t y;
+ bool button;
+} report_analog_joystick_t;
+report_analog_joystick_t analog_joystick_read(void);
+void analog_joystick_init(void);
diff --git a/drivers/sensors/cirque_pinnacle.c b/drivers/sensors/cirque_pinnacle.c
new file mode 100644
index 00000000000..b807c4f0766
--- /dev/null
+++ b/drivers/sensors/cirque_pinnacle.c
@@ -0,0 +1,232 @@
+// Copyright (c) 2018 Cirque Corp. Restrictions apply. See: www.cirque.com/sw-license
+#include "cirque_pinnacle.h"
+#include "print.h"
+#include "debug.h"
+#include "wait.h"
+
+// Registers for RAP
+// clang-format off
+#define FIRMWARE_ID 0x00
+#define FIRMWARE_VERSION_C 0x01
+#define STATUS_1 0x02
+#define SYSCONFIG_1 0x03
+#define FEEDCONFIG_1 0x04
+#define FEEDCONFIG_2 0x05
+#define CALIBRATION_CONFIG_1 0x07
+#define PS2_AU_CONTROL 0x08
+#define SAMPLE_RATE 0x09
+#define Z_IDLE_COUNT 0x0A
+#define Z_SCALER 0x0B
+#define SLEEP_INTERVAL 0x0C
+#define SLEEP_TIMER 0x0D
+#define PACKET_BYTE_0 0x12
+#define PACKET_BYTE_1 0x13
+#define PACKET_BYTE_2 0x14
+#define PACKET_BYTE_3 0x15
+#define PACKET_BYTE_4 0x16
+#define PACKET_BYTE_5 0x17
+
+#define ERA_VALUE 0x1B
+#define ERA_HIGH_BYTE 0x1C
+#define ERA_LOW_BYTE 0x1D
+#define ERA_CONTROL 0x1E
+
+// ADC-attenuation settings (held in BIT_7 and BIT_6)
+// 1X = most sensitive, 4X = least sensitive
+#define ADC_ATTENUATE_1X 0x00
+#define ADC_ATTENUATE_2X 0x40
+#define ADC_ATTENUATE_3X 0x80
+#define ADC_ATTENUATE_4X 0xC0
+
+// Register config values for this demo
+#define SYSCONFIG_1_VALUE 0x00
+#define FEEDCONFIG_1_VALUE 0x03 // 0x03 for absolute mode 0x01 for relative mode
+#define FEEDCONFIG_2_VALUE 0x1C // 0x1F for normal functionality 0x1E for intellimouse disabled
+#define Z_IDLE_COUNT_VALUE 0x05
+// clang-format on
+
+bool touchpad_init;
+uint16_t scale_data = 1024;
+
+void cirque_pinnacle_clear_flags(void);
+void cirque_pinnacle_enable_feed(bool feedEnable);
+void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count);
+void RAP_Write(uint8_t address, uint8_t data);
+
+#ifdef CONSOLE_ENABLE
+void print_byte(uint8_t byte) { xprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0')); }
+#endif
+
+/* Logical Scaling Functions */
+// Clips raw coordinates to "reachable" window of sensor
+// NOTE: values outside this window can only appear as a result of noise
+void ClipCoordinates(pinnacle_data_t* coordinates) {
+ if (coordinates->xValue < CIRQUE_PINNACLE_X_LOWER) {
+ coordinates->xValue = CIRQUE_PINNACLE_X_LOWER;
+ } else if (coordinates->xValue > CIRQUE_PINNACLE_X_UPPER) {
+ coordinates->xValue = CIRQUE_PINNACLE_X_UPPER;
+ }
+ if (coordinates->yValue < CIRQUE_PINNACLE_Y_LOWER) {
+ coordinates->yValue = CIRQUE_PINNACLE_Y_LOWER;
+ } else if (coordinates->yValue > CIRQUE_PINNACLE_Y_UPPER) {
+ coordinates->yValue = CIRQUE_PINNACLE_Y_UPPER;
+ }
+}
+
+uint16_t cirque_pinnacle_get_scale(void) { return scale_data; }
+void cirque_pinnacle_set_scale(uint16_t scale) { scale_data = scale; }
+
+// Scales data to desired X & Y resolution
+void cirque_pinnacle_scale_data(pinnacle_data_t* coordinates, uint16_t xResolution, uint16_t yResolution) {
+ uint32_t xTemp = 0;
+ uint32_t yTemp = 0;
+
+ ClipCoordinates(coordinates);
+
+ xTemp = coordinates->xValue;
+ yTemp = coordinates->yValue;
+
+ // translate coordinates to (0, 0) reference by subtracting edge-offset
+ xTemp -= CIRQUE_PINNACLE_X_LOWER;
+ yTemp -= CIRQUE_PINNACLE_Y_LOWER;
+
+ // scale coordinates to (xResolution, yResolution) range
+ coordinates->xValue = (uint16_t)(xTemp * xResolution / CIRQUE_PINNACLE_X_RANGE);
+ coordinates->yValue = (uint16_t)(yTemp * yResolution / CIRQUE_PINNACLE_Y_RANGE);
+}
+
+// Clears Status1 register flags (SW_CC and SW_DR)
+void cirque_pinnacle_clear_flags() {
+ RAP_Write(STATUS_1, 0x00);
+ wait_us(50);
+}
+
+// Enables/Disables the feed
+void cirque_pinnacle_enable_feed(bool feedEnable) {
+ uint8_t temp;
+
+ RAP_ReadBytes(FEEDCONFIG_1, &temp, 1); // Store contents of FeedConfig1 register
+
+ if (feedEnable) {
+ temp |= 0x01; // Set Feed Enable bit
+ RAP_Write(0x04, temp);
+ } else {
+ temp &= ~0x01; // Clear Feed Enable bit
+ RAP_Write(0x04, temp);
+ }
+}
+
+/* ERA (Extended Register Access) Functions */
+// Reads bytes from an extended register at (16-bit address),
+// stores values in <*data>
+void ERA_ReadBytes(uint16_t address, uint8_t* data, uint16_t count) {
+ uint8_t ERAControlValue = 0xFF;
+
+ cirque_pinnacle_enable_feed(false); // Disable feed
+
+ RAP_Write(ERA_HIGH_BYTE, (uint8_t)(address >> 8)); // Send upper byte of ERA address
+ RAP_Write(ERA_LOW_BYTE, (uint8_t)(address & 0x00FF)); // Send lower byte of ERA address
+
+ for (uint16_t i = 0; i < count; i++) {
+ RAP_Write(ERA_CONTROL, 0x05); // Signal ERA-read (auto-increment) to Pinnacle
+
+ // Wait for status register 0x1E to clear
+ do {
+ RAP_ReadBytes(ERA_CONTROL, &ERAControlValue, 1);
+ } while (ERAControlValue != 0x00);
+
+ RAP_ReadBytes(ERA_VALUE, data + i, 1);
+
+ cirque_pinnacle_clear_flags();
+ }
+}
+
+// Writes a byte, , to an extended register at (16-bit address)
+void ERA_WriteByte(uint16_t address, uint8_t data) {
+ uint8_t ERAControlValue = 0xFF;
+
+ cirque_pinnacle_enable_feed(false); // Disable feed
+
+ RAP_Write(ERA_VALUE, data); // Send data byte to be written
+
+ RAP_Write(ERA_HIGH_BYTE, (uint8_t)(address >> 8)); // Upper byte of ERA address
+ RAP_Write(ERA_LOW_BYTE, (uint8_t)(address & 0x00FF)); // Lower byte of ERA address
+
+ RAP_Write(ERA_CONTROL, 0x02); // Signal an ERA-write to Pinnacle
+
+ // Wait for status register 0x1E to clear
+ do {
+ RAP_ReadBytes(ERA_CONTROL, &ERAControlValue, 1);
+ } while (ERAControlValue != 0x00);
+
+ cirque_pinnacle_clear_flags();
+}
+
+void cirque_pinnacle_set_adc_attenuation(uint8_t adcGain) {
+ uint8_t temp = 0x00;
+
+ ERA_ReadBytes(0x0187, &temp, 1);
+ temp &= 0x3F; // clear top two bits
+ temp |= adcGain;
+ ERA_WriteByte(0x0187, temp);
+ ERA_ReadBytes(0x0187, &temp, 1);
+}
+
+// Changes thresholds to improve detection of fingers
+void cirque_pinnacle_tune_edge_sensitivity(void) {
+ uint8_t temp = 0x00;
+
+ ERA_ReadBytes(0x0149, &temp, 1);
+ ERA_WriteByte(0x0149, 0x04);
+ ERA_ReadBytes(0x0149, &temp, 1);
+
+ ERA_ReadBytes(0x0168, &temp, 1);
+ ERA_WriteByte(0x0168, 0x03);
+ ERA_ReadBytes(0x0168, &temp, 1);
+}
+
+/* Pinnacle-based TM040040 Functions */
+void cirque_pinnacle_init(void) {
+#if defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi)
+ spi_init();
+#elif defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_i2c)
+ i2c_init();
+#endif
+
+ touchpad_init = true;
+ // Host clears SW_CC flag
+ cirque_pinnacle_clear_flags();
+
+ // Host configures bits of registers 0x03 and 0x05
+ RAP_Write(SYSCONFIG_1, SYSCONFIG_1_VALUE);
+ RAP_Write(FEEDCONFIG_2, FEEDCONFIG_2_VALUE);
+
+ // Host enables preferred output mode (absolute)
+ RAP_Write(FEEDCONFIG_1, FEEDCONFIG_1_VALUE);
+
+ // Host sets z-idle packet count to 5 (default is 30)
+ RAP_Write(Z_IDLE_COUNT, Z_IDLE_COUNT_VALUE);
+
+ cirque_pinnacle_set_adc_attenuation(0xFF);
+ cirque_pinnacle_tune_edge_sensitivity();
+ cirque_pinnacle_enable_feed(true);
+}
+
+// Reads XYZ data from Pinnacle registers 0x14 through 0x17
+// Stores result in pinnacle_data_t struct with xValue, yValue, and zValue members
+pinnacle_data_t cirque_pinnacle_read_data(void) {
+ uint8_t data[6] = {0};
+ pinnacle_data_t result = {0};
+ RAP_ReadBytes(PACKET_BYTE_0, data, 6);
+
+ cirque_pinnacle_clear_flags();
+
+ result.buttonFlags = data[0] & 0x3F;
+ result.xValue = data[2] | ((data[4] & 0x0F) << 8);
+ result.yValue = data[3] | ((data[4] & 0xF0) << 4);
+ result.zValue = data[5] & 0x3F;
+
+ result.touchDown = (result.xValue != 0 || result.yValue != 0);
+
+ return result;
+}
diff --git a/drivers/sensors/cirque_pinnacle.h b/drivers/sensors/cirque_pinnacle.h
new file mode 100644
index 00000000000..db891122a66
--- /dev/null
+++ b/drivers/sensors/cirque_pinnacle.h
@@ -0,0 +1,74 @@
+// Copyright (c) 2018 Cirque Corp. Restrictions apply. See: www.cirque.com/sw-license
+
+#pragma once
+
+#include
+#include
+
+// Convenient way to store and access measurements
+typedef struct {
+ uint16_t xValue;
+ uint16_t yValue;
+ uint16_t zValue;
+ uint8_t buttonFlags;
+ bool touchDown;
+} pinnacle_data_t;
+
+void cirque_pinnacle_init(void);
+pinnacle_data_t cirque_pinnacle_read_data(void);
+void cirque_pinnacle_scale_data(pinnacle_data_t* coordinates, uint16_t xResolution, uint16_t yResolution);
+uint16_t cirque_pinnacle_get_scale(void);
+void cirque_pinnacle_set_scale(uint16_t scale);
+
+#ifndef CIRQUE_PINNACLE_TIMEOUT
+# define CIRQUE_PINNACLE_TIMEOUT 20
+#endif
+
+// Coordinate scaling values
+#ifndef CIRQUE_PINNACLE_X_LOWER
+# define CIRQUE_PINNACLE_X_LOWER 127 // min "reachable" X value
+#endif
+#ifndef CIRQUE_PINNACLE_X_UPPER
+# define CIRQUE_PINNACLE_X_UPPER 1919 // max "reachable" X value
+#endif
+#ifndef CIRQUE_PINNACLE_Y_LOWER
+# define CIRQUE_PINNACLE_Y_LOWER 63 // min "reachable" Y value
+#endif
+#ifndef CIRQUE_PINNACLE_Y_UPPER
+# define CIRQUE_PINNACLE_Y_UPPER 1471 // max "reachable" Y value
+#endif
+#ifndef CIRQUE_PINNACLE_X_RANGE
+# define CIRQUE_PINNACLE_X_RANGE (CIRQUE_PINNACLE_X_UPPER - CIRQUE_PINNACLE_X_LOWER)
+#endif
+#ifndef CIRQUE_PINNACLE_Y_RANGE
+# define CIRQUE_PINNACLE_Y_RANGE (CIRQUE_PINNACLE_Y_UPPER - CIRQUE_PINNACLE_Y_LOWER)
+#endif
+
+#if defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_i2c)
+# include "i2c_master.h"
+// Cirque's 7-bit I2C Slave Address
+# ifndef CIRQUE_PINNACLE_ADDR
+# define CIRQUE_PINNACLE_ADDR 0x2A
+# endif
+#elif defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi)
+# include "spi_master.h"
+# ifndef CIRQUE_PINNACLE_CLOCK_SPEED
+# define CIRQUE_PINNACLE_CLOCK_SPEED 10000000
+# endif
+# ifndef CIRQUE_PINNACLE_SPI_LSBFIRST
+# define CIRQUE_PINNACLE_SPI_LSBFIRST false
+# endif
+# ifndef CIRQUE_PINNACLE_SPI_MODE
+# define CIRQUE_PINNACLE_SPI_MODE 1
+# endif
+# ifndef CIRQUE_PINNACLE_SPI_DIVISOR
+# ifdef __AVR__
+# define CIRQUE_PINNACLE_SPI_DIVISOR (F_CPU / CIRQUE_PINNACLE_CLOCK_SPEED)
+# else
+# define CIRQUE_PINNACLE_SPI_DIVISOR 64
+# endif
+# ifndef CIRQUE_PINNACLE_SPI_CS_PIN
+# error "No Chip Select pin has been defined -- missing CIRQUE_PINNACLE_SPI_CS_PIN define"
+# endif
+# endif
+#endif
diff --git a/drivers/sensors/cirque_pinnacle_i2c.c b/drivers/sensors/cirque_pinnacle_i2c.c
new file mode 100644
index 00000000000..81dd982b0cc
--- /dev/null
+++ b/drivers/sensors/cirque_pinnacle_i2c.c
@@ -0,0 +1,43 @@
+// Copyright (c) 2018 Cirque Corp. Restrictions apply. See: www.cirque.com/sw-license
+#include "cirque_pinnacle.h"
+#include "i2c_master.h"
+#include "print.h"
+#include "debug.h"
+#include "stdio.h"
+
+// Masks for Cirque Register Access Protocol (RAP)
+#define WRITE_MASK 0x80
+#define READ_MASK 0xA0
+
+extern bool touchpad_init;
+
+/* RAP Functions */
+// Reads Pinnacle registers starting at
+void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count) {
+ uint8_t cmdByte = READ_MASK | address; // Form the READ command byte
+ if (touchpad_init) {
+ i2c_writeReg(CIRQUE_PINNACLE_ADDR << 1, cmdByte, NULL, 0, CIRQUE_PINNACLE_TIMEOUT);
+ if (i2c_readReg(CIRQUE_PINNACLE_ADDR << 1, cmdByte, data, count, CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) {
+#ifdef CONSOLE_ENABLE
+ dprintf("error right touchpad\n");
+#endif
+ touchpad_init = false;
+ }
+ i2c_stop();
+ }
+}
+
+// Writes single-byte to
+void RAP_Write(uint8_t address, uint8_t data) {
+ uint8_t cmdByte = WRITE_MASK | address; // Form the WRITE command byte
+
+ if (touchpad_init) {
+ if (i2c_writeReg(CIRQUE_PINNACLE_ADDR << 1, cmdByte, &data, sizeof(data), CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) {
+#ifdef CONSOLE_ENABLE
+ dprintf("error right touchpad\n");
+#endif
+ touchpad_init = false;
+ }
+ i2c_stop();
+ }
+}
diff --git a/drivers/sensors/cirque_pinnacle_spi.c b/drivers/sensors/cirque_pinnacle_spi.c
new file mode 100644
index 00000000000..f3eee887584
--- /dev/null
+++ b/drivers/sensors/cirque_pinnacle_spi.c
@@ -0,0 +1,52 @@
+// Copyright (c) 2018 Cirque Corp. Restrictions apply. See: www.cirque.com/sw-license
+#include "cirque_pinnacle.h"
+#include "spi_master.h"
+#include "print.h"
+#include "debug.h"
+
+// Masks for Cirque Register Access Protocol (RAP)
+#define WRITE_MASK 0x80
+#define READ_MASK 0xA0
+
+extern bool touchpad_init;
+
+/* RAP Functions */
+// Reads Pinnacle registers starting at
+void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count) {
+ uint8_t cmdByte = READ_MASK | address; // Form the READ command byte
+ if (touchpad_init) {
+ if (spi_start(CIRQUE_PINNACLE_SPI_CS_PIN, CIRQUE_TRACKPAD_SPI_LSBFIRST, CIRQUE_PINNACLE_SPI_MODE, CIRQUE_PINNACLE_SPI_DIVISOR)) {
+ spi_write(cmdByte);
+ spi_read(); // filler
+ spi_read(); // filler
+ for (uint8_t i = 0; i < count; i++) {
+ data[i] = spi_read(); // each sepsequent read gets another register's contents
+ }
+ } else {
+#ifdef CONSOLE_ENABLE
+ dprintf("error right touchpad\n");
+#endif
+ touchpad_init = false;
+ j
+ }
+ spi_stop();
+ }
+}
+
+// Writes single-byte to
+void RAP_Write(uint8_t address, uint8_t data) {
+ uint8_t cmdByte = WRITE_MASK | address; // Form the WRITE command byte
+
+ if (touchpad_init) {
+ if (spi_start(CIRQUE_PINNACLE_SPI_CS_PIN, CIRQUE_TRACKPAD_SPI_LSBFIRST, CIRQUE_PINNACLE_SPI_MODE, CIRQUE_PINNACLE_SPI_DIVISOR)) {
+ spi_write(cmdByte);
+ spi_write(data);
+ } else {
+#ifdef CONSOLE_ENABLE
+ dprintf("error right touchpad\n");
+#endif
+ touchpad_init = false;
+ }
+ spi_stop();
+ }
+}
diff --git a/drivers/sensors/pimoroni_trackball.c b/drivers/sensors/pimoroni_trackball.c
index 48098ff0cca..7d390056ead 100644
--- a/drivers/sensors/pimoroni_trackball.c
+++ b/drivers/sensors/pimoroni_trackball.c
@@ -17,73 +17,55 @@
#include "pimoroni_trackball.h"
#include "i2c_master.h"
#include "print.h"
-
-#ifndef PIMORONI_TRACKBALL_ADDRESS
-# define PIMORONI_TRACKBALL_ADDRESS 0x0A
-#endif
-#ifndef PIMORONI_TRACKBALL_INTERVAL_MS
-# define PIMORONI_TRACKBALL_INTERVAL_MS 8
-#endif
-#ifndef PIMORONI_TRACKBALL_MOUSE_SCALE
-# define PIMORONI_TRACKBALL_MOUSE_SCALE 5
-#endif
-#ifndef PIMORONI_TRACKBALL_SCROLL_SCALE
-# define PIMORONI_TRACKBALL_SCROLL_SCALE 1
-#endif
-#ifndef PIMORONI_TRACKBALL_DEBOUNCE_CYCLES
-# define PIMORONI_TRACKBALL_DEBOUNCE_CYCLES 20
-#endif
-#ifndef PIMORONI_TRACKBALL_ERROR_COUNT
-# define PIMORONI_TRACKBALL_ERROR_COUNT 10
-#endif
-
-#define TRACKBALL_TIMEOUT 100
-#define TRACKBALL_REG_LED_RED 0x00
-#define TRACKBALL_REG_LED_GRN 0x01
-#define TRACKBALL_REG_LED_BLU 0x02
-#define TRACKBALL_REG_LED_WHT 0x03
-#define TRACKBALL_REG_LEFT 0x04
-#define TRACKBALL_REG_RIGHT 0x05
-#define TRACKBALL_REG_UP 0x06
-#define TRACKBALL_REG_DOWN 0x07
-
-static pimoroni_data current_pimoroni_data;
-static report_mouse_t mouse_report;
-static bool scrolling = false;
-static int16_t x_offset = 0;
-static int16_t y_offset = 0;
-static int16_t h_offset = 0;
-static int16_t v_offset = 0;
-static uint16_t precision = 128;
-static uint8_t error_count = 0;
-
-float trackball_get_precision(void) { return ((float)precision / 128); }
-void trackball_set_precision(float floatprecision) { precision = (floatprecision * 128); }
-bool trackball_is_scrolling(void) { return scrolling; }
-void trackball_set_scrolling(bool scroll) { scrolling = scroll; }
-
-void trackball_set_rgbw(uint8_t r, uint8_t g, uint8_t b, uint8_t w) {
+#include "debug.h"
+#include "timer.h"
+
+// clang-format off
+#define PIMORONI_TRACKBALL_REG_LED_RED 0x00
+#define PIMORONI_TRACKBALL_REG_LED_GRN 0x01
+#define PIMORONI_TRACKBALL_REG_LED_BLU 0x02
+#define PIMORONI_TRACKBALL_REG_LED_WHT 0x03
+#define PIMORONI_TRACKBALL_REG_LEFT 0x04
+#define PIMORONI_TRACKBALL_REG_RIGHT 0x05
+#define PIMORONI_TRACKBALL_REG_UP 0x06
+#define PIMORONI_TRACKBALL_REG_DOWN 0x07
+// clang-format on
+
+static uint16_t precision = 128;
+
+float pimoroni_trackball_get_precision(void) { return ((float)precision / 128); }
+void pimoroni_trackball_set_precision(float floatprecision) { precision = (floatprecision * 128); }
+
+void pimoroni_trackball_set_rgbw(uint8_t r, uint8_t g, uint8_t b, uint8_t w) {
uint8_t data[4] = {r, g, b, w};
- __attribute__((unused)) i2c_status_t status = i2c_writeReg(PIMORONI_TRACKBALL_ADDRESS << 1, TRACKBALL_REG_LED_RED, data, sizeof(data), TRACKBALL_TIMEOUT);
-#ifdef TRACKBALL_DEBUG
- dprintf("Trackball RGBW i2c_status_t: %d\n", status);
+ __attribute__((unused)) i2c_status_t status = i2c_writeReg(PIMORONI_TRACKBALL_ADDRESS << 1, PIMORONI_TRACKBALL_REG_LED_RED, data, sizeof(data), PIMORONI_TRACKBALL_TIMEOUT);
+
+#ifdef CONSOLE_ENABLE
+ if (debug_mouse) dprintf("Trackball RGBW i2c_status_t: %d\n", status);
#endif
}
-i2c_status_t read_pimoroni_trackball(pimoroni_data* data) {
- i2c_status_t status = i2c_readReg(PIMORONI_TRACKBALL_ADDRESS << 1, TRACKBALL_REG_LEFT, (uint8_t*)data, sizeof(*data), TRACKBALL_TIMEOUT);
-#ifdef TRACKBALL_DEBUG
- dprintf("Trackball READ i2c_status_t: %d\nLeft: %d\nRight: %d\nUp: %d\nDown: %d\nSwtich: %d\n", status, data->left, data->right, data->up, data->down, data->click);
+i2c_status_t read_pimoroni_trackball(pimoroni_data_t* data) {
+ i2c_status_t status = i2c_readReg(PIMORONI_TRACKBALL_ADDRESS << 1, PIMORONI_TRACKBALL_REG_LEFT, (uint8_t*)data, sizeof(*data), PIMORONI_TRACKBALL_TIMEOUT);
+#ifdef CONSOLE_ENABLE
+ if (debug_mouse) {
+ static uint16_t d_timer;
+ if (timer_elapsed(d_timer) > PIMORONI_TRACKBALL_DEBUG_INTERVAL) {
+ dprintf("Trackball READ i2c_status_t: %d L: %d R: %d Up: %d D: %d SW: %d\n", status, data->left, data->right, data->up, data->down, data->click);
+ d_timer = timer_read();
+ }
+ }
#endif
+
return status;
}
-__attribute__((weak)) void pointing_device_init(void) {
+__attribute__((weak)) void pimironi_trackball_device_init(void) {
i2c_init();
- trackball_set_rgbw(0x00, 0x00, 0x00, 0x00);
+ pimoroni_trackball_set_rgbw(0x00, 0x00, 0x00, 0x00);
}
-int16_t trackball_get_offsets(uint8_t negative_dir, uint8_t positive_dir, uint8_t scale) {
+int16_t pimoroni_trackball_get_offsets(uint8_t negative_dir, uint8_t positive_dir, uint8_t scale) {
uint8_t offset = 0;
bool isnegative = false;
if (negative_dir > positive_dir) {
@@ -96,7 +78,7 @@ int16_t trackball_get_offsets(uint8_t negative_dir, uint8_t positive_dir, uint8_
return isnegative ? -(int16_t)(magnitude) : (int16_t)(magnitude);
}
-void trackball_adapt_values(int8_t* mouse, int16_t* offset) {
+void pimoroni_trackball_adapt_values(int8_t* mouse, int16_t* offset) {
if (*offset > 127) {
*mouse = 127;
*offset -= 127;
@@ -108,94 +90,3 @@ void trackball_adapt_values(int8_t* mouse, int16_t* offset) {
*offset = 0;
}
}
-
-__attribute__((weak)) void trackball_click(bool pressed, report_mouse_t* mouse) {
-#ifdef PIMORONI_TRACKBALL_CLICK
- if (pressed) {
- mouse->buttons |= MOUSE_BTN1;
- } else {
- mouse->buttons &= ~MOUSE_BTN1;
- }
-#endif
-}
-
-__attribute__((weak)) bool pointing_device_task_user(pimoroni_data* trackball_data) { return true; };
-
-__attribute__((weak)) void pointing_device_task() {
- static fast_timer_t throttle = 0;
- static uint16_t debounce = 0;
-
- if (error_count < PIMORONI_TRACKBALL_ERROR_COUNT && timer_elapsed_fast(throttle) >= PIMORONI_TRACKBALL_INTERVAL_MS) {
- i2c_status_t status = read_pimoroni_trackball(¤t_pimoroni_data);
-
- if (status == I2C_STATUS_SUCCESS) {
- error_count = 0;
-
- if (pointing_device_task_user(¤t_pimoroni_data)) {
- mouse_report = pointing_device_get_report();
-
- if (!(current_pimoroni_data.click & 128)) {
- trackball_click(false, &mouse_report);
- if (!debounce) {
- if (scrolling) {
-#ifdef PIMORONI_TRACKBALL_INVERT_X
- h_offset += trackball_get_offsets(current_pimoroni_data.right, current_pimoroni_data.left, PIMORONI_TRACKBALL_SCROLL_SCALE);
-#else
- h_offset -= trackball_get_offsets(current_pimoroni_data.right, current_pimoroni_data.left, PIMORONI_TRACKBALL_SCROLL_SCALE);
-#endif
-#ifdef PIMORONI_TRACKBALL_INVERT_Y
- v_offset += trackball_get_offsets(current_pimoroni_data.down, current_pimoroni_data.up, PIMORONI_TRACKBALL_SCROLL_SCALE);
-#else
- v_offset -= trackball_get_offsets(current_pimoroni_data.down, current_pimoroni_data.up, PIMORONI_TRACKBALL_SCROLL_SCALE);
-#endif
- } else {
-#ifdef PIMORONI_TRACKBALL_INVERT_X
- x_offset -= trackball_get_offsets(current_pimoroni_data.right, current_pimoroni_data.left, PIMORONI_TRACKBALL_MOUSE_SCALE);
-#else
- x_offset += trackball_get_offsets(current_pimoroni_data.right, current_pimoroni_data.left, PIMORONI_TRACKBALL_MOUSE_SCALE);
-#endif
-#ifdef PIMORONI_TRACKBALL_INVERT_Y
- y_offset -= trackball_get_offsets(current_pimoroni_data.down, current_pimoroni_data.up, PIMORONI_TRACKBALL_MOUSE_SCALE);
-#else
- y_offset += trackball_get_offsets(current_pimoroni_data.down, current_pimoroni_data.up, PIMORONI_TRACKBALL_MOUSE_SCALE);
-#endif
- }
- if (scrolling) {
-#ifndef PIMORONI_TRACKBALL_ROTATE
- trackball_adapt_values(&mouse_report.h, &h_offset);
- trackball_adapt_values(&mouse_report.v, &v_offset);
-#else
- trackball_adapt_values(&mouse_report.h, &v_offset);
- trackball_adapt_values(&mouse_report.v, &h_offset);
-#endif
- mouse_report.x = 0;
- mouse_report.y = 0;
- } else {
-#ifndef PIMORONI_TRACKBALL_ROTATE
- trackball_adapt_values(&mouse_report.x, &x_offset);
- trackball_adapt_values(&mouse_report.y, &y_offset);
-#else
- trackball_adapt_values(&mouse_report.x, &y_offset);
- trackball_adapt_values(&mouse_report.y, &x_offset);
-#endif
- mouse_report.h = 0;
- mouse_report.v = 0;
- }
- } else {
- debounce--;
- }
- } else {
- trackball_click(true, &mouse_report);
- debounce = PIMORONI_TRACKBALL_DEBOUNCE_CYCLES;
- }
- }
- } else {
- error_count++;
- }
-
- pointing_device_set_report(mouse_report);
- pointing_device_send();
-
- throttle = timer_read_fast();
- }
-}
diff --git a/drivers/sensors/pimoroni_trackball.h b/drivers/sensors/pimoroni_trackball.h
index 6b2a41425d4..59ee8724ba6 100644
--- a/drivers/sensors/pimoroni_trackball.h
+++ b/drivers/sensors/pimoroni_trackball.h
@@ -16,22 +16,46 @@
*/
#pragma once
-#include "quantum.h"
-#include "pointing_device.h"
+#include
+#include "report.h"
+#include "i2c_master.h"
-typedef struct pimoroni_data {
+#ifndef PIMORONI_TRACKBALL_ADDRESS
+# define PIMORONI_TRACKBALL_ADDRESS 0x0A
+#endif
+#ifndef PIMORONI_TRACKBALL_INTERVAL_MS
+# define PIMORONI_TRACKBALL_INTERVAL_MS 8
+#endif
+#ifndef PIMORONI_TRACKBALL_SCALE
+# define PIMORONI_TRACKBALL_SCALE 5
+#endif
+#ifndef PIMORONI_TRACKBALL_DEBOUNCE_CYCLES
+# define PIMORONI_TRACKBALL_DEBOUNCE_CYCLES 20
+#endif
+#ifndef PIMORONI_TRACKBALL_ERROR_COUNT
+# define PIMORONI_TRACKBALL_ERROR_COUNT 10
+#endif
+
+#ifndef PIMORONI_TRACKBALL_TIMEOUT
+# define PIMORONI_TRACKBALL_TIMEOUT 100
+#endif
+
+#ifndef PIMORONI_TRACKBALL_DEBUG_INTERVAL
+# define PIMORONI_TRACKBALL_DEBUG_INTERVAL 100
+#endif
+
+typedef struct {
uint8_t left;
uint8_t right;
uint8_t up;
uint8_t down;
uint8_t click;
-} pimoroni_data;
+} pimoroni_data_t;
-void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white);
-void trackball_click(bool pressed, report_mouse_t* mouse);
-int16_t trackball_get_offsets(uint8_t negative_dir, uint8_t positive_dir, uint8_t scale);
-void trackball_adapt_values(int8_t* mouse, int16_t* offset);
-float trackball_get_precision(void);
-void trackball_set_precision(float precision);
-bool trackball_is_scrolling(void);
-void trackball_set_scrolling(bool scroll);
+void pimironi_trackball_device_init(void);
+void pimoroni_trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white);
+int16_t pimoroni_trackball_get_offsets(uint8_t negative_dir, uint8_t positive_dir, uint8_t scale);
+void pimoroni_trackball_adapt_values(int8_t* mouse, int16_t* offset);
+float pimoroni_trackball_get_precision(void);
+void pimoroni_trackball_set_precision(float precision);
+i2c_status_t read_pimoroni_trackball(pimoroni_data_t* data);
diff --git a/drivers/sensors/pmw3360.c b/drivers/sensors/pmw3360.c
index 79b653e452a..2b27dccbb64 100644
--- a/drivers/sensors/pmw3360.c
+++ b/drivers/sensors/pmw3360.c
@@ -20,62 +20,71 @@
#include "wait.h"
#include "debug.h"
#include "print.h"
-#include "pmw3360_firmware.h"
+#include PMW3360_FIRMWARE_H
// Registers
-#define REG_Product_ID 0x00
-#define REG_Revision_ID 0x01
-#define REG_Motion 0x02
-#define REG_Delta_X_L 0x03
-#define REG_Delta_X_H 0x04
-#define REG_Delta_Y_L 0x05
-#define REG_Delta_Y_H 0x06
-#define REG_SQUAL 0x07
-#define REG_Raw_Data_Sum 0x08
-#define REG_Maximum_Raw_data 0x09
-#define REG_Minimum_Raw_data 0x0A
-#define REG_Shutter_Lower 0x0B
-#define REG_Shutter_Upper 0x0C
-#define REG_Control 0x0D
-#define REG_Config1 0x0F
-#define REG_Config2 0x10
-#define REG_Angle_Tune 0x11
-#define REG_Frame_Capture 0x12
-#define REG_SROM_Enable 0x13
-#define REG_Run_Downshift 0x14
-#define REG_Rest1_Rate_Lower 0x15
-#define REG_Rest1_Rate_Upper 0x16
-#define REG_Rest1_Downshift 0x17
-#define REG_Rest2_Rate_Lower 0x18
-#define REG_Rest2_Rate_Upper 0x19
-#define REG_Rest2_Downshift 0x1A
-#define REG_Rest3_Rate_Lower 0x1B
-#define REG_Rest3_Rate_Upper 0x1C
-#define REG_Observation 0x24
-#define REG_Data_Out_Lower 0x25
-#define REG_Data_Out_Upper 0x26
-#define REG_Raw_Data_Dump 0x29
-#define REG_SROM_ID 0x2A
-#define REG_Min_SQ_Run 0x2B
-#define REG_Raw_Data_Threshold 0x2C
-#define REG_Config5 0x2F
-#define REG_Power_Up_Reset 0x3A
-#define REG_Shutdown 0x3B
-#define REG_Inverse_Product_ID 0x3F
-#define REG_LiftCutoff_Tune3 0x41
-#define REG_Angle_Snap 0x42
-#define REG_LiftCutoff_Tune1 0x4A
-#define REG_Motion_Burst 0x50
-#define REG_LiftCutoff_Tune_Timeout 0x58
+// clang-format off
+#define REG_Product_ID 0x00
+#define REG_Revision_ID 0x01
+#define REG_Motion 0x02
+#define REG_Delta_X_L 0x03
+#define REG_Delta_X_H 0x04
+#define REG_Delta_Y_L 0x05
+#define REG_Delta_Y_H 0x06
+#define REG_SQUAL 0x07
+#define REG_Raw_Data_Sum 0x08
+#define REG_Maximum_Raw_data 0x09
+#define REG_Minimum_Raw_data 0x0A
+#define REG_Shutter_Lower 0x0B
+#define REG_Shutter_Upper 0x0C
+#define REG_Control 0x0D
+#define REG_Config1 0x0F
+#define REG_Config2 0x10
+#define REG_Angle_Tune 0x11
+#define REG_Frame_Capture 0x12
+#define REG_SROM_Enable 0x13
+#define REG_Run_Downshift 0x14
+#define REG_Rest1_Rate_Lower 0x15
+#define REG_Rest1_Rate_Upper 0x16
+#define REG_Rest1_Downshift 0x17
+#define REG_Rest2_Rate_Lower 0x18
+#define REG_Rest2_Rate_Upper 0x19
+#define REG_Rest2_Downshift 0x1A
+#define REG_Rest3_Rate_Lower 0x1B
+#define REG_Rest3_Rate_Upper 0x1C
+#define REG_Observation 0x24
+#define REG_Data_Out_Lower 0x25
+#define REG_Data_Out_Upper 0x26
+#define REG_Raw_Data_Dump 0x29
+#define REG_SROM_ID 0x2A
+#define REG_Min_SQ_Run 0x2B
+#define REG_Raw_Data_Threshold 0x2C
+#define REG_Config5 0x2F
+#define REG_Power_Up_Reset 0x3A
+#define REG_Shutdown 0x3B
+#define REG_Inverse_Product_ID 0x3F
+#define REG_LiftCutoff_Tune3 0x41
+#define REG_Angle_Snap 0x42
+#define REG_LiftCutoff_Tune1 0x4A
+#define REG_Motion_Burst 0x50
+#define REG_LiftCutoff_Tune_Timeout 0x58
#define REG_LiftCutoff_Tune_Min_Length 0x5A
-#define REG_SROM_Load_Burst 0x62
-#define REG_Lift_Config 0x63
-#define REG_Raw_Data_Burst 0x64
-#define REG_LiftCutoff_Tune2 0x65
+#define REG_SROM_Load_Burst 0x62
+#define REG_Lift_Config 0x63
+#define REG_Raw_Data_Burst 0x64
+#define REG_LiftCutoff_Tune2 0x65
+// clang-format on
+
+#ifndef MAX_CPI
+# define MAX_CPI 0x77 // limits to 0--119, should be max cpi/100
+#endif
bool _inBurst = false;
+#ifdef CONSOLE_ENABLE
void print_byte(uint8_t byte) { dprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0')); }
+#endif
+#define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)))
bool spi_start_adv(void) {
bool status = spi_start(PMW3360_CS_PIN, PMW3360_SPI_LSBFIRST, PMW3360_SPI_MODE, PMW3360_SPI_DIVISOR);
@@ -124,20 +133,20 @@ uint8_t spi_read_adv(uint8_t reg_addr) {
return data;
}
-void pmw_set_cpi(uint16_t cpi) {
- uint8_t cpival = constrain((cpi / 100) - 1, 0, 0x77); // limits to 0--119
+void pmw3360_set_cpi(uint16_t cpi) {
+ uint8_t cpival = constrain((cpi / 100) - 1, 0, MAX_CPI);
spi_start_adv();
spi_write_adv(REG_Config1, cpival);
spi_stop();
}
-uint16_t pmw_get_cpi(void) {
+uint16_t pmw3360_get_cpi(void) {
uint8_t cpival = spi_read_adv(REG_Config1);
return (uint16_t)(cpival & 0xFF) * 100;
}
-bool pmw_spi_init(void) {
+bool pmw3360_init(void) {
setPinOutput(PMW3360_CS_PIN);
spi_init();
@@ -164,12 +173,12 @@ bool pmw_spi_init(void) {
spi_read_adv(REG_Delta_Y_L);
spi_read_adv(REG_Delta_Y_H);
- pmw_upload_firmware();
+ pmw3360_upload_firmware();
spi_stop_adv();
wait_ms(10);
- pmw_set_cpi(PMW3360_CPI);
+ pmw3360_set_cpi(PMW3360_CPI);
wait_ms(1);
@@ -177,14 +186,14 @@ bool pmw_spi_init(void) {
spi_write_adv(REG_Angle_Tune, constrain(ROTATIONAL_TRANSFORM_ANGLE, -30, 30));
- bool init_success = pmw_check_signature();
+ bool init_success = pmw3360_check_signature();
writePinLow(PMW3360_CS_PIN);
return init_success;
}
-void pmw_upload_firmware(void) {
+void pmw3360_upload_firmware(void) {
spi_write_adv(REG_SROM_Enable, 0x1d);
wait_ms(10);
@@ -211,16 +220,18 @@ void pmw_upload_firmware(void) {
wait_ms(10);
}
-bool pmw_check_signature(void) {
+bool pmw3360_check_signature(void) {
uint8_t pid = spi_read_adv(REG_Product_ID);
uint8_t iv_pid = spi_read_adv(REG_Inverse_Product_ID);
uint8_t SROM_ver = spi_read_adv(REG_SROM_ID);
- return (pid == 0x42 && iv_pid == 0xBD && SROM_ver == 0x04); // signature for SROM 0x04
+ return (pid == firmware_signature[0] && iv_pid == firmware_signature[1] && SROM_ver == firmware_signature[2]); // signature for SROM 0x04
}
-report_pmw_t pmw_read_burst(void) {
+report_pmw3360_t pmw3360_read_burst(void) {
if (!_inBurst) {
+#ifdef CONSOLE_ENABLE
dprintf("burst on");
+#endif
spi_write_adv(REG_Motion_Burst, 0x00);
_inBurst = true;
}
@@ -229,12 +240,7 @@ report_pmw_t pmw_read_burst(void) {
spi_write(REG_Motion_Burst);
wait_us(35); // waits for tSRAD
- report_pmw_t data;
- data.motion = 0;
- data.dx = 0;
- data.mdx = 0;
- data.dy = 0;
- data.mdx = 0;
+ report_pmw3360_t data = {0};
data.motion = spi_read();
spi_write(0x00); // skip Observation
@@ -245,6 +251,7 @@ report_pmw_t pmw_read_burst(void) {
spi_stop();
+#ifdef CONSOLE_ENABLE
if (debug_mouse) {
print_byte(data.motion);
print_byte(data.dx);
@@ -253,6 +260,7 @@ report_pmw_t pmw_read_burst(void) {
print_byte(data.mdy);
dprintf("\n");
}
+#endif
data.isMotion = (data.motion & 0x80) != 0;
data.isOnSurface = (data.motion & 0x08) == 0;
diff --git a/drivers/sensors/pmw3360.h b/drivers/sensors/pmw3360.h
index 7429a6ba09e..7b2bef5b80b 100644
--- a/drivers/sensors/pmw3360.h
+++ b/drivers/sensors/pmw3360.h
@@ -18,6 +18,8 @@
#pragma once
+#include
+#include "report.h"
#include "spi_master.h"
#ifndef PMW3360_CPI
@@ -25,7 +27,7 @@
#endif
#ifndef PMW3360_CLOCK_SPEED
-# define PMW3360_CLOCK_SPEED 70000000
+# define PMW3360_CLOCK_SPEED 2000000
#endif
#ifndef PMW3360_SPI_LSBFIRST
@@ -52,6 +54,17 @@
# error "No chip select pin defined -- missing PMW3360_CS_PIN"
#endif
+/*
+The pmw33660 and pmw3389 use the same registers and timing and such.
+The only differences between the two is the firmware used, and the
+range for the DPI. So add a semi-secret hack to allow use of the
+pmw3389's firmware blob. Also, can set the max cpi range too.
+This should work for the 3390 and 3391 too, in theory.
+*/
+#ifndef PMW3360_FIRMWARE_H
+# define PMW3360_FIRMWARE_H "pmw3360_firmware.h"
+#endif
+
#ifdef CONSOLE_ENABLE
void print_byte(uint8_t byte);
#endif
@@ -64,19 +77,18 @@ typedef struct {
int8_t mdx;
int16_t dy; // displacement on y directions.
int8_t mdy;
-} report_pmw_t;
+} report_pmw3360_t;
-bool spi_start_adv(void);
-void spi_stop_adv(void);
-spi_status_t spi_write_adv(uint8_t reg_addr, uint8_t data);
-uint8_t spi_read_adv(uint8_t reg_addr);
-bool pmw_spi_init(void);
-void pmw_set_cpi(uint16_t cpi);
-uint16_t pmw_get_cpi(void);
-void pmw_upload_firmware(void);
-bool pmw_check_signature(void);
-report_pmw_t pmw_read_burst(void);
+bool spi_start_adv(void);
+void spi_stop_adv(void);
+spi_status_t spi_write_adv(uint8_t reg_addr, uint8_t data);
+uint8_t spi_read_adv(uint8_t reg_addr);
+bool pmw3360_init(void);
+void pmw3360_set_cpi(uint16_t cpi);
+uint16_t pmw3360_get_cpi(void);
+void pmw3360_upload_firmware(void);
+bool pmw3360_check_signature(void);
+report_pmw3360_t pmw3360_read_burst(void);
#define degToRad(angleInDegrees) ((angleInDegrees)*M_PI / 180.0)
#define radToDeg(angleInRadians) ((angleInRadians)*180.0 / M_PI)
-#define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)))
diff --git a/drivers/sensors/pmw3360_firmware.h b/drivers/sensors/pmw3360_firmware.h
index 4d5fe7a0b97..ed9fda5a751 100644
--- a/drivers/sensors/pmw3360_firmware.h
+++ b/drivers/sensors/pmw3360_firmware.h
@@ -20,8 +20,13 @@
#include "progmem.h"
+// PID, Inverse PID, SROM version
+const uint8_t firmware_signature[] PROGMEM = {0x42, 0xBD, 0x04};
+
#define FIRMWARE_LENGTH 4094
+// Firmware Blob foor PMW3360
+
// clang-format off
const uint8_t firmware_data[FIRMWARE_LENGTH] PROGMEM = {
0x01, 0x04, 0x8E, 0x96, 0x6E, 0x77, 0x3E, 0xFE, 0x7E, 0x5F, 0x1D, 0xB8, 0xF2, 0x66, 0x4E, 0xFF,
diff --git a/drivers/sensors/pmw3389_firmware.h b/drivers/sensors/pmw3389_firmware.h
new file mode 100644
index 00000000000..0564dab73af
--- /dev/null
+++ b/drivers/sensors/pmw3389_firmware.h
@@ -0,0 +1,303 @@
+/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna)
+ * Copyright 2019 Sunjun Kim
+ * Copyright 2020 Ploopy Corporation
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General 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
+
+// PID, Inverse PID, SROM version
+const uint8_t firmware_signature[] PROGMEM = {0x42, 0xBD, 0x04};
+
+// clang-format off
+// Firmware Blob foor PMW3389
+const uint16_t firmware_length = 4094;
+// clang-format off
+const uint8_t firmware_data[] PROGMEM = { // SROM 0x04
+0x01, 0xe8, 0xba, 0x26, 0x0b, 0xb2, 0xbe, 0xfe, 0x7e, 0x5f, 0x3c, 0xdb, 0x15, 0xa8, 0xb3,
+0xe4, 0x2b, 0xb5, 0xe8, 0x53, 0x07, 0x6d, 0x3b, 0xd1, 0x20, 0xc2, 0x06, 0x6f, 0x3d, 0xd9,
+0x11, 0xa0, 0xc2, 0xe7, 0x2d, 0xb9, 0xd1, 0x20, 0xa3, 0xa5, 0xc8, 0xf3, 0x64, 0x4a, 0xf7,
+0x4d, 0x18, 0x93, 0xa4, 0xca, 0xf7, 0x6c, 0x5a, 0x36, 0xee, 0x5e, 0x3e, 0xfe, 0x7e, 0x7e,
+0x5f, 0x1d, 0x99, 0xb0, 0xc3, 0xe5, 0x29, 0xd3, 0x03, 0x65, 0x48, 0x12, 0x87, 0x6d, 0x58,
+0x32, 0xe6, 0x2f, 0xdc, 0x3a, 0xf2, 0x4f, 0xfd, 0x59, 0x11, 0x81, 0x61, 0x21, 0xc0, 0x02,
+0x86, 0x8e, 0x7f, 0x5d, 0x38, 0xf2, 0x47, 0x0c, 0x7b, 0x55, 0x28, 0xb3, 0xe4, 0x4a, 0x16,
+0xab, 0xbf, 0xdd, 0x38, 0xf2, 0x66, 0x4e, 0xff, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xa5, 0xc8,
+0x12, 0xa6, 0xaf, 0xdc, 0x3a, 0xd1, 0x41, 0x60, 0x75, 0x58, 0x24, 0x92, 0xd4, 0x72, 0x6c,
+0xe0, 0x2f, 0xfd, 0x23, 0x8d, 0x1c, 0x5b, 0xb2, 0x97, 0x36, 0x3d, 0x0b, 0xa2, 0x49, 0xb1,
+0x58, 0xf2, 0x1f, 0xc0, 0xcb, 0xf8, 0x41, 0x4f, 0xcd, 0x1e, 0x6b, 0x39, 0xa7, 0x2b, 0xe9,
+0x30, 0x16, 0x83, 0xd2, 0x0e, 0x47, 0x8f, 0xe3, 0xb1, 0xdf, 0xa2, 0x15, 0xdb, 0x5d, 0x30,
+0xc5, 0x1a, 0xab, 0x31, 0x99, 0xf3, 0xfa, 0xb2, 0x86, 0x69, 0xad, 0x7a, 0xe8, 0xa7, 0x18,
+0x6a, 0xcc, 0xc8, 0x65, 0x23, 0x87, 0xa8, 0x5f, 0xf5, 0x21, 0x59, 0x75, 0x09, 0x71, 0x45,
+0x55, 0x25, 0x4b, 0xda, 0xa1, 0xc3, 0xf7, 0x41, 0xab, 0x59, 0xd9, 0x74, 0x12, 0x55, 0x5f,
+0xbc, 0xaf, 0xd9, 0xfd, 0xb0, 0x1e, 0xa3, 0x0f, 0xff, 0xde, 0x11, 0x16, 0x6a, 0xae, 0x0e,
+0xe1, 0x5d, 0x3c, 0x10, 0x43, 0x9a, 0xa1, 0x0b, 0x24, 0x8f, 0x0d, 0x7f, 0x0b, 0x5e, 0x4c,
+0x42, 0xa4, 0x84, 0x2c, 0x40, 0xd0, 0x55, 0x39, 0xe6, 0x4b, 0xf8, 0x9b, 0x2f, 0xdc, 0x28,
+0xff, 0xfa, 0xb5, 0x85, 0x19, 0xe5, 0x28, 0xa1, 0x77, 0xaa, 0x73, 0xf3, 0x03, 0xc7, 0x62,
+0xa6, 0x91, 0x18, 0xc9, 0xb0, 0xcd, 0x05, 0xdc, 0xca, 0x81, 0x26, 0x1a, 0x47, 0x40, 0xda,
+0x36, 0x7d, 0x6a, 0x53, 0xc8, 0x5a, 0x77, 0x5d, 0x19, 0xa4, 0x1b, 0x23, 0x83, 0xd0, 0xb2,
+0xaa, 0x0e, 0xbf, 0x77, 0x4e, 0x3a, 0x3b, 0x59, 0x00, 0x31, 0x0d, 0x02, 0x1b, 0x88, 0x7a,
+0xd4, 0xbd, 0x9d, 0xcc, 0x58, 0x04, 0x69, 0xf6, 0x3b, 0xca, 0x42, 0xe2, 0xfd, 0xc3, 0x3d,
+0x39, 0xc5, 0xd0, 0x71, 0xe4, 0xc8, 0xb7, 0x3e, 0x3f, 0xc8, 0xe9, 0xca, 0xc9, 0x3f, 0x04,
+0x4e, 0x1b, 0x79, 0xca, 0xa5, 0x61, 0xc2, 0xed, 0x1d, 0xa6, 0xda, 0x5a, 0xe9, 0x7f, 0x65,
+0x8c, 0xbe, 0x12, 0x6e, 0xa4, 0x5b, 0x33, 0x2f, 0x84, 0x28, 0x9c, 0x1c, 0x88, 0x2d, 0xff,
+0x07, 0xbf, 0xa6, 0xd7, 0x5a, 0x88, 0x86, 0xb0, 0x3f, 0xf6, 0x31, 0x5b, 0x11, 0x6d, 0xf5,
+0x58, 0xeb, 0x58, 0x02, 0x9e, 0xb5, 0x9a, 0xb1, 0xff, 0x25, 0x9d, 0x8b, 0x4f, 0xb6, 0x0a,
+0xf9, 0xea, 0x3e, 0x3f, 0x21, 0x09, 0x65, 0x21, 0x22, 0xfe, 0x3d, 0x4e, 0x11, 0x5b, 0x9e,
+0x5a, 0x59, 0x8b, 0xdd, 0xd8, 0xce, 0xd6, 0xd9, 0x59, 0xd2, 0x1e, 0xfd, 0xef, 0x0d, 0x1b,
+0xd9, 0x61, 0x7f, 0xd7, 0x2d, 0xad, 0x62, 0x09, 0xe5, 0x22, 0x63, 0xea, 0xc7, 0x31, 0xd9,
+0xa1, 0x38, 0x80, 0x5c, 0xa7, 0x32, 0x82, 0xec, 0x1b, 0xa2, 0x49, 0x5a, 0x06, 0xd2, 0x7c,
+0xc9, 0x96, 0x57, 0xbb, 0x17, 0x75, 0xfc, 0x7a, 0x8f, 0x0d, 0x77, 0xb5, 0x7a, 0x8e, 0x3e,
+0xf4, 0xba, 0x2f, 0x69, 0x13, 0x26, 0xd6, 0xd9, 0x21, 0x60, 0x2f, 0x21, 0x3e, 0x87, 0xee,
+0xfd, 0x87, 0x16, 0x0d, 0xc8, 0x08, 0x00, 0x25, 0x71, 0xac, 0x2c, 0x03, 0x2a, 0x37, 0x2d,
+0xb3, 0x34, 0x09, 0x91, 0xe3, 0x06, 0x2c, 0x38, 0x37, 0x95, 0x3b, 0x17, 0x7a, 0xaf, 0xac,
+0x99, 0x55, 0xab, 0x41, 0x39, 0x5f, 0x8e, 0xa6, 0x43, 0x80, 0x03, 0x88, 0x6f, 0x7d, 0xbd,
+0x5a, 0xb4, 0x2b, 0x32, 0x23, 0x5a, 0xa9, 0x31, 0x32, 0x39, 0x4c, 0x5b, 0xf4, 0x6b, 0xaf,
+0x66, 0x6f, 0x3c, 0x8e, 0x2d, 0x82, 0x97, 0x9f, 0x4a, 0x01, 0xdc, 0x99, 0x98, 0x00, 0xec,
+0x38, 0x7a, 0x79, 0x70, 0xa6, 0x85, 0xd6, 0x21, 0x63, 0x0d, 0x45, 0x9a, 0x2e, 0x5e, 0xa7,
+0xb1, 0xea, 0x66, 0x6a, 0xbc, 0x62, 0x2d, 0x7b, 0x7d, 0x85, 0xea, 0x95, 0x2f, 0xc0, 0xe8,
+0x6f, 0x35, 0xa0, 0x3a, 0x02, 0x25, 0xbc, 0xb2, 0x5f, 0x5c, 0x43, 0x96, 0xcc, 0x26, 0xd2,
+0x16, 0xb4, 0x96, 0x73, 0xd7, 0x13, 0xc7, 0xae, 0x53, 0x15, 0x31, 0x89, 0x68, 0x66, 0x6d,
+0x2c, 0x92, 0x1f, 0xcc, 0x5b, 0xa7, 0x8f, 0x5d, 0xbb, 0xc9, 0xdb, 0xe8, 0x3b, 0x9d, 0x61,
+0x74, 0x8b, 0x05, 0xa1, 0x58, 0x52, 0x68, 0xee, 0x3d, 0x39, 0x79, 0xa0, 0x9b, 0xdd, 0xe1,
+0x55, 0xc9, 0x60, 0xeb, 0xad, 0xb8, 0x5b, 0xc2, 0x5a, 0xb5, 0x2c, 0x18, 0x55, 0xa9, 0x50,
+0xc3, 0xf6, 0x72, 0x5f, 0xcc, 0xe2, 0xf4, 0x55, 0xb5, 0xd6, 0xb5, 0x4a, 0x99, 0xa5, 0x28,
+0x74, 0x97, 0x18, 0xe8, 0xc0, 0x84, 0x89, 0x50, 0x03, 0x86, 0x4d, 0x1a, 0xb7, 0x09, 0x90,
+0xa2, 0x01, 0x04, 0xbb, 0x73, 0x62, 0xcb, 0x97, 0x22, 0x70, 0x5d, 0x52, 0x41, 0x8e, 0xd9,
+0x90, 0x15, 0xaa, 0xab, 0x0a, 0x31, 0x65, 0xb4, 0xda, 0xd0, 0xee, 0x24, 0xc9, 0x41, 0x91,
+0x1e, 0xbc, 0x46, 0x70, 0x40, 0x9d, 0xda, 0x0e, 0x2a, 0xe4, 0xb2, 0x4c, 0x9f, 0xf2, 0xfc,
+0xf3, 0x84, 0x17, 0x44, 0x1e, 0xd7, 0xca, 0x23, 0x1f, 0x3f, 0x5a, 0x22, 0x3d, 0xaf, 0x9b,
+0x2d, 0xfc, 0x41, 0xad, 0x26, 0xb4, 0x45, 0x67, 0x0b, 0x80, 0x0e, 0xf9, 0x61, 0x37, 0xec,
+0x3b, 0xf4, 0x4b, 0x14, 0xdf, 0x5a, 0x0c, 0x3a, 0x50, 0x0b, 0x14, 0x0c, 0x72, 0xae, 0xc6,
+0xc5, 0xec, 0x35, 0x53, 0x2d, 0x59, 0xed, 0x91, 0x74, 0xe2, 0xc4, 0xc8, 0xf2, 0x25, 0x6b,
+0x97, 0x6f, 0xc9, 0x76, 0xce, 0xa9, 0xb1, 0x99, 0x8f, 0x5a, 0x92, 0x3b, 0xc4, 0x8d, 0x54,
+0x50, 0x40, 0x72, 0xd6, 0x90, 0x83, 0xfc, 0xe5, 0x49, 0x8b, 0x17, 0xf5, 0xfd, 0x6b, 0x8d,
+0x32, 0x02, 0xe9, 0x0a, 0xfe, 0xbf, 0x00, 0x6b, 0xa3, 0xad, 0x5f, 0x09, 0x4b, 0x97, 0x2b,
+0x00, 0x58, 0x65, 0x2e, 0x07, 0x49, 0x0a, 0x3b, 0x6b, 0x2e, 0x50, 0x6c, 0x1d, 0xac, 0xb7,
+0x6a, 0x26, 0xd8, 0x13, 0xa4, 0xca, 0x16, 0xae, 0xab, 0x93, 0xb9, 0x1c, 0x1c, 0xb4, 0x47,
+0x6a, 0x38, 0x36, 0x17, 0x27, 0xc9, 0x7f, 0xc7, 0x64, 0xcb, 0x89, 0x58, 0xc5, 0x61, 0xc2,
+0xc6, 0xea, 0x15, 0x0b, 0x34, 0x0c, 0x5d, 0x61, 0x76, 0x6e, 0x2b, 0x62, 0x40, 0x92, 0xa3,
+0x6c, 0xef, 0xf4, 0xe4, 0xc3, 0xa1, 0xa8, 0xf5, 0x94, 0x79, 0x0d, 0xd1, 0x3d, 0xcb, 0x3d,
+0x40, 0xb6, 0xd0, 0xf0, 0x10, 0x54, 0xd8, 0x47, 0x25, 0x51, 0xc5, 0x41, 0x79, 0x00, 0xe5,
+0xa0, 0x72, 0xde, 0xbb, 0x3b, 0x62, 0x17, 0xf6, 0xbc, 0x5d, 0x00, 0x76, 0x2e, 0xa7, 0x3b,
+0xb6, 0xf1, 0x98, 0x72, 0x59, 0x2a, 0x73, 0xb0, 0x21, 0xd6, 0x49, 0xe0, 0xc0, 0xd5, 0xeb,
+0x02, 0x7d, 0x4b, 0x41, 0x28, 0x70, 0x2d, 0xec, 0x2b, 0x71, 0x1f, 0x0b, 0xb9, 0x71, 0x63,
+0x06, 0xe6, 0xbc, 0x60, 0xbb, 0xf4, 0x9a, 0x62, 0x43, 0x09, 0x18, 0x4e, 0x93, 0x06, 0x4d,
+0x76, 0xfa, 0x7f, 0xbd, 0x02, 0xe4, 0x50, 0x91, 0x12, 0xe5, 0x86, 0xff, 0x64, 0x1e, 0xaf,
+0x7e, 0xb3, 0xb2, 0xde, 0x89, 0xc1, 0xa2, 0x6f, 0x40, 0x7b, 0x41, 0x51, 0x63, 0xea, 0x25,
+0xd1, 0x97, 0x57, 0x92, 0xa8, 0x45, 0xa1, 0xa5, 0x45, 0x21, 0x43, 0x7f, 0x83, 0x15, 0x29,
+0xd0, 0x30, 0x53, 0x32, 0xb4, 0x5a, 0x17, 0x96, 0xbc, 0xc2, 0x68, 0xa9, 0xb7, 0xaf, 0xac,
+0xdf, 0xf1, 0xe3, 0x89, 0xba, 0x24, 0x79, 0x54, 0xc6, 0x14, 0x07, 0x1c, 0x1e, 0x0d, 0x3a,
+0x6b, 0xe5, 0x3d, 0x4e, 0x10, 0x60, 0x96, 0xec, 0x6c, 0xda, 0x47, 0xae, 0x03, 0x25, 0x39,
+0x1d, 0x74, 0xc8, 0xac, 0x6a, 0xf2, 0x6b, 0x05, 0x2a, 0x9a, 0xe7, 0xe8, 0x92, 0xd6, 0xc2,
+0x6d, 0xfa, 0xe8, 0xa7, 0x9d, 0x5f, 0x48, 0xc9, 0x75, 0xf1, 0x66, 0x6a, 0xdb, 0x5d, 0x9a,
+0xcd, 0x27, 0xdd, 0xb9, 0x24, 0x04, 0x9c, 0x18, 0xc2, 0x6d, 0x0c, 0x91, 0x34, 0x48, 0x42,
+0x6f, 0xe9, 0x59, 0x70, 0xc4, 0x7e, 0x81, 0x0e, 0x32, 0x0a, 0x93, 0x48, 0xb0, 0xc0, 0x15,
+0x9e, 0x05, 0xac, 0x36, 0x16, 0xcb, 0x59, 0x65, 0xa0, 0x83, 0xdf, 0x3e, 0xda, 0xfb, 0x1d,
+0x1a, 0xdb, 0x65, 0xec, 0x9a, 0xc6, 0xc3, 0x8e, 0x3c, 0x45, 0xfd, 0xc8, 0xf5, 0x1c, 0x6a,
+0x67, 0x0d, 0x8f, 0x99, 0x7d, 0x30, 0x21, 0x8c, 0xea, 0x22, 0x87, 0x65, 0xc9, 0xb2, 0x4c,
+0xe4, 0x1b, 0x46, 0xba, 0x54, 0xbd, 0x7c, 0xca, 0xd5, 0x8f, 0x5b, 0xa5, 0x01, 0x04, 0xd8,
+0x0a, 0x16, 0xbf, 0xb9, 0x50, 0x2e, 0x37, 0x2f, 0x64, 0xf3, 0x70, 0x11, 0x02, 0x05, 0x31,
+0x9b, 0xa0, 0xb2, 0x01, 0x5e, 0x4f, 0x19, 0xc9, 0xd4, 0xea, 0xa1, 0x79, 0x54, 0x53, 0xa7,
+0xde, 0x2f, 0x49, 0xd3, 0xd1, 0x63, 0xb5, 0x03, 0x15, 0x4e, 0xbf, 0x04, 0xb3, 0x26, 0x8b,
+0x20, 0xb2, 0x45, 0xcf, 0xcd, 0x5b, 0x82, 0x32, 0x88, 0x61, 0xa7, 0xa8, 0xb2, 0xa0, 0x72,
+0x96, 0xc0, 0xdb, 0x2b, 0xe2, 0x5f, 0xba, 0xe3, 0xf5, 0x8a, 0xde, 0xf1, 0x18, 0x01, 0x16,
+0x40, 0xd9, 0x86, 0x12, 0x09, 0x18, 0x1b, 0x05, 0x0c, 0xb1, 0xb5, 0x47, 0xe2, 0x43, 0xab,
+0xfe, 0x92, 0x63, 0x7e, 0x95, 0x2b, 0xf0, 0xaf, 0xe1, 0xf1, 0xc3, 0x4a, 0xff, 0x2b, 0x09,
+0xbb, 0x4a, 0x0e, 0x9a, 0xc4, 0xd8, 0x64, 0x7d, 0x83, 0xa0, 0x4f, 0x44, 0xdb, 0xc4, 0xa8,
+0x58, 0xef, 0xfc, 0x9e, 0x77, 0xf9, 0xa6, 0x8f, 0x58, 0x8b, 0x12, 0xf4, 0xe9, 0x81, 0x12,
+0x47, 0x51, 0x41, 0x83, 0xef, 0xf6, 0x73, 0xbc, 0x8e, 0x0f, 0x4c, 0x8f, 0x4e, 0x69, 0x90,
+0x77, 0x29, 0x5d, 0x92, 0xb0, 0x6d, 0x06, 0x67, 0x29, 0x60, 0xbd, 0x4b, 0x17, 0xc8, 0x89,
+0x69, 0x28, 0x29, 0xd6, 0x78, 0xcb, 0x11, 0x4c, 0xba, 0x8b, 0x68, 0xae, 0x7e, 0x9f, 0xef,
+0x95, 0xda, 0xe2, 0x9e, 0x7f, 0xe9, 0x55, 0xe5, 0xe1, 0xe2, 0xb7, 0xe6, 0x5f, 0xbb, 0x2c,
+0xa2, 0xe6, 0xee, 0xc7, 0x0a, 0x60, 0xa9, 0xd1, 0x80, 0xdf, 0x7f, 0xd6, 0x97, 0xab, 0x1d,
+0x22, 0x25, 0xfc, 0x79, 0x23, 0xe0, 0xae, 0xc5, 0xef, 0x16, 0xa4, 0xa1, 0x0f, 0x92, 0xa9,
+0xc7, 0xe3, 0x3a, 0x55, 0xdf, 0x62, 0x49, 0xd9, 0xf5, 0x84, 0x49, 0xc5, 0x90, 0x34, 0xd3,
+0xe1, 0xac, 0x99, 0x21, 0xb1, 0x02, 0x76, 0x4a, 0xfa, 0xd4, 0xbb, 0xa4, 0x9c, 0xa2, 0xe2,
+0xcb, 0x3d, 0x3b, 0x14, 0x75, 0x60, 0xd1, 0x02, 0xb4, 0xa3, 0xb4, 0x72, 0x06, 0xf9, 0x19,
+0x9c, 0xe2, 0xe4, 0xa7, 0x0f, 0x25, 0x88, 0xc6, 0x86, 0xd6, 0x8c, 0x74, 0x4e, 0x6e, 0xfc,
+0xa8, 0x48, 0x9e, 0xa7, 0x9d, 0x1a, 0x4b, 0x37, 0x09, 0xc8, 0xb0, 0x10, 0xbe, 0x6f, 0xfe,
+0xa3, 0xc4, 0x7a, 0xb5, 0x3d, 0xe8, 0x30, 0xf1, 0x0d, 0xa0, 0xb2, 0x44, 0xfc, 0x9b, 0x8c,
+0xf8, 0x61, 0xed, 0x81, 0xd1, 0x62, 0x11, 0xb4, 0xe1, 0xd5, 0x39, 0x52, 0x89, 0xd3, 0xa8,
+0x49, 0x31, 0xdf, 0xb6, 0xf9, 0x91, 0xf4, 0x1c, 0x9d, 0x09, 0x95, 0x40, 0x56, 0xe7, 0xe3,
+0xcd, 0x5c, 0x92, 0xc1, 0x1d, 0x6b, 0xe9, 0x78, 0x6f, 0x8e, 0x94, 0x42, 0x66, 0xa2, 0xaa,
+0xd3, 0xc8, 0x2e, 0xe3, 0xf6, 0x07, 0x72, 0x0b, 0x6b, 0x1e, 0x7b, 0xb9, 0x7c, 0xe0, 0xa0,
+0xbc, 0xd9, 0x25, 0xdf, 0x87, 0xa8, 0x5f, 0x9c, 0xcc, 0xf0, 0xdb, 0x42, 0x8e, 0x07, 0x31,
+0x13, 0x01, 0x66, 0x32, 0xd1, 0xb8, 0xd6, 0xe3, 0x5e, 0x12, 0x76, 0x61, 0xd3, 0x38, 0x89,
+0xe6, 0x17, 0x6f, 0xa5, 0xf2, 0x71, 0x0e, 0xa5, 0xe2, 0x88, 0x30, 0xbb, 0xbe, 0x8a, 0xea,
+0xc7, 0x62, 0xc4, 0xcf, 0xb8, 0xcd, 0x33, 0x8d, 0x3d, 0x3e, 0xb5, 0x60, 0x3a, 0x03, 0x92,
+0xe4, 0x6d, 0x1b, 0xe0, 0xb4, 0x84, 0x08, 0x55, 0x88, 0xa7, 0x3a, 0xb9, 0x3d, 0x43, 0xc3,
+0xc0, 0xfa, 0x07, 0x6a, 0xca, 0x94, 0xad, 0x99, 0x55, 0xf1, 0xf1, 0xc0, 0x23, 0x87, 0x1d,
+0x3d, 0x1c, 0xd1, 0x66, 0xa0, 0x57, 0x10, 0x52, 0xa2, 0x7f, 0xbe, 0xf9, 0x88, 0xb6, 0x02,
+0xbf, 0x08, 0x23, 0xa9, 0x0c, 0x63, 0x17, 0x2a, 0xae, 0xf5, 0xf7, 0xb7, 0x21, 0x83, 0x92,
+0x31, 0x23, 0x0d, 0x20, 0xc3, 0xc2, 0x05, 0x21, 0x62, 0x8e, 0x45, 0xe8, 0x14, 0xc1, 0xda,
+0x75, 0xb8, 0xf8, 0x92, 0x01, 0xd0, 0x5d, 0x18, 0x9f, 0x99, 0x11, 0x19, 0xf5, 0x35, 0xe8,
+0x7f, 0x20, 0x88, 0x8c, 0x05, 0x75, 0xf5, 0xd7, 0x40, 0x17, 0xbb, 0x1e, 0x36, 0x52, 0xd9,
+0xa4, 0x9c, 0xc2, 0x9d, 0x42, 0x81, 0xd8, 0xc7, 0x8a, 0xe7, 0x4c, 0x81, 0xe0, 0xb7, 0x57,
+0xed, 0x48, 0x8b, 0xf0, 0x97, 0x15, 0x61, 0xd9, 0x2c, 0x7c, 0x45, 0xaf, 0xc2, 0xcd, 0xfc,
+0xaa, 0x13, 0xad, 0x59, 0xcc, 0xb2, 0xb2, 0x6e, 0xdd, 0x63, 0x9c, 0x32, 0x0f, 0xec, 0x83,
+0xbe, 0x78, 0xac, 0x91, 0x44, 0x1a, 0x1f, 0xea, 0xfd, 0x5d, 0x8e, 0xb4, 0xc0, 0x84, 0xd4,
+0xac, 0xb4, 0x87, 0x5f, 0xac, 0xef, 0xdf, 0xcd, 0x12, 0x56, 0xc8, 0xcd, 0xfe, 0xc5, 0xda,
+0xd3, 0xc1, 0x69, 0xf3, 0x61, 0x05, 0xea, 0x25, 0xe2, 0x12, 0x05, 0x8f, 0x39, 0x08, 0x08,
+0x7c, 0x37, 0xb6, 0x7e, 0x5b, 0xd8, 0xb1, 0x0e, 0xf2, 0xdb, 0x4b, 0xf1, 0xad, 0x90, 0x01,
+0x57, 0xcd, 0xa0, 0xb4, 0x52, 0xe8, 0xf3, 0xd7, 0x8a, 0xbd, 0x4f, 0x9f, 0x21, 0x40, 0x72,
+0xa4, 0xfc, 0x0b, 0x01, 0x2b, 0x2f, 0xb6, 0x4c, 0x95, 0x2d, 0x35, 0x33, 0x41, 0x6b, 0xa0,
+0x93, 0xe7, 0x2c, 0xf2, 0xd3, 0x72, 0x8b, 0xf4, 0x4f, 0x15, 0x3c, 0xaf, 0xd6, 0x12, 0xde,
+0x3f, 0x83, 0x3f, 0xff, 0xf8, 0x7f, 0xf6, 0xcc, 0xa6, 0x7f, 0xc9, 0x9a, 0x6e, 0x1f, 0xc1,
+0x0c, 0xfb, 0xee, 0x9c, 0xe7, 0xaf, 0xc9, 0x26, 0x54, 0xef, 0xb0, 0x39, 0xef, 0xb2, 0xe9,
+0x23, 0xc4, 0xef, 0xd1, 0xa1, 0xa4, 0x25, 0x24, 0x6f, 0x8d, 0x6a, 0xe5, 0x8a, 0x32, 0x3a,
+0xaf, 0xfc, 0xda, 0xce, 0x18, 0x25, 0x42, 0x07, 0x4d, 0x45, 0x8b, 0xdf, 0x85, 0xcf, 0x55,
+0xb2, 0x24, 0xfe, 0x9c, 0x69, 0x74, 0xa7, 0x6e, 0xa0, 0xce, 0xc0, 0x39, 0xf4, 0x86, 0xc6,
+0x8d, 0xae, 0xb9, 0x48, 0x64, 0x13, 0x0b, 0x40, 0x81, 0xa2, 0xc9, 0xa8, 0x85, 0x51, 0xee,
+0x9f, 0xcf, 0xa2, 0x8c, 0x19, 0x52, 0x48, 0xe2, 0xc1, 0xa8, 0x58, 0xb4, 0x10, 0x24, 0x06,
+0x58, 0x51, 0xfc, 0xb9, 0x12, 0xec, 0xfd, 0x73, 0xb4, 0x6d, 0x84, 0xfa, 0x06, 0x8b, 0x05,
+0x0b, 0x2d, 0xd6, 0xd6, 0x1f, 0x29, 0x82, 0x9f, 0x19, 0x12, 0x1e, 0xb2, 0x04, 0x8f, 0x7f,
+0x4d, 0xbd, 0x30, 0x2e, 0xe3, 0xe0, 0x88, 0x29, 0xc5, 0x93, 0xd6, 0x6c, 0x1f, 0x29, 0x45,
+0x91, 0xa7, 0x58, 0xcd, 0x05, 0x17, 0xd6, 0x6d, 0xb3, 0xca, 0x66, 0xcc, 0x3c, 0x4a, 0x74,
+0xfd, 0x08, 0x10, 0xa6, 0x99, 0x92, 0x10, 0xd2, 0x85, 0xab, 0x6e, 0x1d, 0x0e, 0x8b, 0x26,
+0x46, 0xd1, 0x6c, 0x84, 0xc0, 0x26, 0x43, 0x59, 0x68, 0xf0, 0x13, 0x1d, 0xfb, 0xe3, 0xd1,
+0xd2, 0xb4, 0x71, 0x9e, 0xf2, 0x59, 0x6a, 0x33, 0x29, 0x79, 0xd2, 0xd7, 0x26, 0xf1, 0xae,
+0x78, 0x9e, 0x1f, 0x0f, 0x3f, 0xe3, 0xe8, 0xd0, 0x27, 0x78, 0x77, 0xf6, 0xac, 0x9c, 0x56,
+0x39, 0x73, 0x8a, 0x6b, 0x2f, 0x34, 0x78, 0xb1, 0x11, 0xdb, 0xa4, 0x5c, 0x80, 0x01, 0x71,
+0x6a, 0xc2, 0xd1, 0x2e, 0x5e, 0x76, 0x28, 0x70, 0x93, 0xae, 0x3e, 0x78, 0xb0, 0x1f, 0x0f,
+0xda, 0xbf, 0xfb, 0x8a, 0x67, 0x65, 0x4f, 0x91, 0xed, 0x49, 0x75, 0x78, 0x62, 0xa2, 0x93,
+0xb5, 0x70, 0x7f, 0x4d, 0x08, 0x4e, 0x79, 0x61, 0xa8, 0x5f, 0x7f, 0xb4, 0x65, 0x9f, 0x91,
+0x54, 0x3a, 0xe8, 0x50, 0x33, 0xd3, 0xd5, 0x8a, 0x7c, 0xf3, 0x9e, 0x8b, 0x77, 0x7b, 0xc6,
+0xc6, 0x0c, 0x45, 0x95, 0x1f, 0xb0, 0xd0, 0x0b, 0x27, 0x4a, 0xfd, 0xc7, 0xf7, 0x0d, 0x5a,
+0x43, 0xc9, 0x7d, 0x35, 0xb0, 0x7d, 0xc4, 0x9c, 0x57, 0x1e, 0x76, 0x0d, 0xf1, 0x95, 0x30,
+0x71, 0xcc, 0xb3, 0x66, 0x3b, 0x63, 0xa8, 0x6c, 0xa3, 0x43, 0xa0, 0x24, 0xcc, 0xb7, 0x53,
+0xfe, 0xfe, 0xbc, 0x6e, 0x60, 0x89, 0xaf, 0x16, 0x21, 0xc8, 0x91, 0x6a, 0x89, 0xce, 0x80,
+0x2c, 0xf1, 0x59, 0xce, 0xc3, 0x60, 0x61, 0x3b, 0x0b, 0x19, 0xfe, 0x99, 0xac, 0x65, 0x90,
+0x15, 0x12, 0x05, 0xac, 0x7e, 0xff, 0x98, 0x7b, 0x66, 0x64, 0x0e, 0x4b, 0x5b, 0xaa, 0x8d,
+0x3b, 0xd2, 0x56, 0xcf, 0x99, 0x39, 0xee, 0x22, 0x81, 0xd0, 0x60, 0x06, 0x66, 0x20, 0x81,
+0x48, 0x3c, 0x6f, 0x3a, 0x77, 0xba, 0xcb, 0x52, 0xac, 0x79, 0x56, 0xaf, 0xe9, 0x16, 0x17,
+0x0a, 0xa3, 0x82, 0x08, 0xd5, 0x3c, 0x97, 0xcb, 0x09, 0xff, 0x7f, 0xf9, 0x4f, 0x60, 0x05,
+0xb9, 0x53, 0x26, 0xaa, 0xb8, 0x50, 0xaa, 0x19, 0x25, 0xae, 0x5f, 0xea, 0x8a, 0xd0, 0x89,
+0x12, 0x80, 0x43, 0x50, 0x24, 0x12, 0x21, 0x14, 0xcd, 0x77, 0xeb, 0x21, 0xcc, 0x5c, 0x09,
+0x64, 0xf3, 0xc7, 0xcb, 0xc5, 0x4b, 0xc3, 0xe7, 0xed, 0xe7, 0x86, 0x2c, 0x1d, 0x8e, 0x19,
+0x52, 0x9b, 0x2a, 0x0c, 0x18, 0x72, 0x0b, 0x1e, 0x1b, 0xb0, 0x0f, 0x42, 0x99, 0x04, 0xae,
+0xd5, 0xb7, 0x89, 0x1a, 0xb9, 0x4f, 0xd6, 0xaf, 0xf3, 0xc9, 0x93, 0x6f, 0xb0, 0x60, 0x83,
+0x6e, 0x6b, 0xd1, 0x5f, 0x3f, 0x1a, 0x83, 0x1e, 0x24, 0x00, 0x87, 0xb5, 0x3e, 0xdb, 0xf9,
+0x4d, 0xa7, 0x16, 0x2e, 0x19, 0x5b, 0x8f, 0x1b, 0x0d, 0x47, 0x72, 0x42, 0xe9, 0x0a, 0x11,
+0x08, 0x2d, 0x88, 0x1c, 0xbc, 0xc7, 0xb4, 0xbe, 0x29, 0x4d, 0x03, 0x5e, 0xec, 0xdf, 0xf3,
+0x3d, 0x2f, 0xe8, 0x1d, 0x9a, 0xd2, 0xd1, 0xab, 0x41, 0x3d, 0x87, 0x11, 0x45, 0xb0, 0x0d,
+0x46, 0xf5, 0xe8, 0x95, 0x62, 0x1c, 0x68, 0xf7, 0xa6, 0x5b, 0x39, 0x4e, 0xbf, 0x47, 0xba,
+0x5d, 0x7f, 0xb7, 0x6a, 0xf4, 0xba, 0x1d, 0x69, 0xf6, 0xa4, 0xe7, 0xe4, 0x6b, 0x3b, 0x0d,
+0x23, 0x16, 0x4a, 0xb2, 0x68, 0xf0, 0xb2, 0x0d, 0x09, 0x17, 0x6a, 0x63, 0x8c, 0x83, 0xd3,
+0xbd, 0x05, 0xc9, 0xf6, 0xf0, 0xa1, 0x31, 0x0b, 0x2c, 0xac, 0x83, 0xac, 0x80, 0x34, 0x32,
+0xb4, 0xec, 0xd0, 0xbc, 0x54, 0x82, 0x9a, 0xc8, 0xf6, 0xa0, 0x7d, 0xc6, 0x79, 0x73, 0xf4,
+0x20, 0x99, 0xf3, 0xb4, 0x01, 0xde, 0x91, 0x27, 0xf2, 0xc0, 0xdc, 0x81, 0x00, 0x4e, 0x7e,
+0x07, 0x99, 0xc8, 0x3a, 0x51, 0xbc, 0x38, 0xd6, 0x8a, 0xa2, 0xde, 0x3b, 0x6a, 0x8c, 0x1a,
+0x7c, 0x81, 0x0f, 0x3a, 0x1f, 0xe4, 0x05, 0x7b, 0x20, 0x35, 0x6b, 0xa5, 0x6a, 0xa7, 0xe7,
+0xbc, 0x9c, 0x20, 0xec, 0x00, 0x15, 0xe2, 0x51, 0xaf, 0x77, 0xeb, 0x29, 0x3c, 0x7d, 0x2e,
+0x00, 0x5c, 0x81, 0x21, 0xfa, 0x35, 0x6f, 0x40, 0xef, 0xfb, 0xd1, 0x3f, 0xcc, 0x9d, 0x55,
+0x53, 0xfb, 0x5a, 0xa5, 0x56, 0x89, 0x0b, 0x52, 0xeb, 0x57, 0x73, 0x4f, 0x1b, 0x67, 0x24,
+0xcb, 0xb8, 0x6a, 0x10, 0x69, 0xd6, 0xfb, 0x52, 0x40, 0xff, 0x20, 0xa5, 0xf3, 0x72, 0xe1,
+0x3d, 0xa4, 0x8c, 0x81, 0x66, 0x16, 0x0d, 0x5d, 0xad, 0xa8, 0x50, 0x25, 0x78, 0x31, 0x77,
+0x0c, 0x57, 0xe4, 0xe9, 0x15, 0x2d, 0xdb, 0x07, 0x87, 0xc8, 0xb0, 0x43, 0xde, 0xfc, 0xfe,
+0xa9, 0xeb, 0xf5, 0xb0, 0xd3, 0x7b, 0xe9, 0x1f, 0x6e, 0xca, 0xe4, 0x03, 0x95, 0xc5, 0xd1,
+0x59, 0x72, 0x63, 0xf0, 0x86, 0x54, 0xe8, 0x16, 0x62, 0x0b, 0x35, 0x29, 0xc2, 0x68, 0xd0,
+0xd6, 0x3e, 0x90, 0x60, 0x57, 0x1d, 0xc9, 0xed, 0x3f, 0xed, 0xb0, 0x2f, 0x7e, 0x97, 0x02,
+0x51, 0xec, 0xee, 0x6f, 0x82, 0x74, 0x76, 0x7f, 0xfb, 0xd6, 0xc4, 0xc3, 0xdd, 0xe8, 0xb1,
+0x60, 0xfc, 0xc6, 0xb9, 0x0d, 0x6a, 0x33, 0x78, 0xc6, 0xc1, 0xbf, 0x86, 0x2c, 0x50, 0xcc,
+0x9a, 0x70, 0x8e, 0x7b, 0xec, 0xab, 0x95, 0xac, 0x53, 0xa0, 0x4b, 0x07, 0x88, 0xaf, 0x42,
+0xed, 0x19, 0x8d, 0xf6, 0x32, 0x17, 0x48, 0x47, 0x1d, 0x41, 0x6f, 0xfe, 0x2e, 0xa7, 0x8f,
+0x4b, 0xa0, 0x51, 0xf3, 0xbf, 0x02, 0x0a, 0x48, 0x58, 0xf7, 0xa1, 0x6d, 0xea, 0xa5, 0x13,
+0x5a, 0x5b, 0xea, 0x0c, 0x9e, 0x52, 0x4f, 0x9e, 0xb9, 0x71, 0x7f, 0x23, 0x83, 0xda, 0x1b,
+0x86, 0x9a, 0x41, 0x29, 0xda, 0x70, 0xe7, 0x64, 0xa1, 0x7b, 0xd5, 0x0a, 0x22, 0x0d, 0x5c,
+0x40, 0xc4, 0x81, 0x07, 0x25, 0x35, 0x4a, 0x1c, 0x10, 0xdb, 0x45, 0x0a, 0xff, 0x36, 0xd4,
+0xe0, 0xeb, 0x5f, 0x68, 0xd6, 0x67, 0xc6, 0xd0, 0x8b, 0x76, 0x1a, 0x7d, 0x59, 0x42, 0xa1,
+0xcb, 0x96, 0x4d, 0x84, 0x09, 0x9a, 0x3d, 0xe0, 0x52, 0x85, 0x6e, 0x48, 0x90, 0x85, 0x2a,
+0x63, 0xb2, 0x69, 0xd2, 0x00, 0x43, 0x31, 0x37, 0xb3, 0x52, 0xaf, 0x62, 0xfa, 0xc1, 0xe0,
+0x03, 0xfb, 0x62, 0xaa, 0x88, 0xc9, 0xb2, 0x2c, 0xd5, 0xa8, 0xf5, 0xa5, 0x4c, 0x12, 0x59,
+0x4e, 0x06, 0x5e, 0x9b, 0x15, 0x66, 0x11, 0xb2, 0x27, 0x92, 0xdc, 0x98, 0x59, 0xde, 0xdf,
+0xfa, 0x9a, 0x32, 0x2e, 0xc0, 0x5d, 0x3c, 0x33, 0x41, 0x6d, 0xaf, 0xb2, 0x25, 0x23, 0x14,
+0xa5, 0x7b, 0xc7, 0x9b, 0x68, 0xf3, 0xda, 0xeb, 0xe3, 0xa9, 0xe2, 0x6f, 0x0e, 0x1d, 0x1c,
+0xba, 0x55, 0xb6, 0x34, 0x6a, 0x93, 0x1f, 0x1f, 0xb8, 0x34, 0xc8, 0x84, 0x08, 0xb1, 0x6b,
+0x6a, 0x28, 0x74, 0x74, 0xe5, 0xeb, 0x75, 0xe9, 0x7c, 0xd8, 0xba, 0xd8, 0x42, 0xa5, 0xee,
+0x1f, 0x80, 0xd9, 0x96, 0xb2, 0x2e, 0xe7, 0xbf, 0xba, 0xeb, 0xd1, 0x69, 0xbb, 0x8f, 0xfd,
+0x5a, 0x63, 0x8f, 0x39, 0x7f, 0xdf, 0x1d, 0x37, 0xd2, 0x18, 0x35, 0x9d, 0xb6, 0xcc, 0xe4,
+0x27, 0x81, 0x89, 0x38, 0x38, 0x68, 0x33, 0xe7, 0x78, 0xd8, 0x76, 0xf5, 0xee, 0xd0, 0x4a,
+0x07, 0x69, 0x19, 0x7a, 0xad, 0x18, 0xb1, 0x94, 0x61, 0x45, 0x53, 0xa2, 0x48, 0xda, 0x96,
+0x4a, 0xf9, 0xee, 0x94, 0x2a, 0x1f, 0x6e, 0x18, 0x3c, 0x92, 0x46, 0xd1, 0x1a, 0x28, 0x18,
+0x32, 0x1f, 0x3a, 0x45, 0xbe, 0x04, 0x35, 0x92, 0xe5, 0xa3, 0xcb, 0xb5, 0x2e, 0x32, 0x43,
+0xac, 0x65, 0x17, 0x89, 0x99, 0x15, 0x03, 0x9e, 0xb1, 0x23, 0x2f, 0xed, 0x76, 0x4d, 0xd8,
+0xac, 0x21, 0x40, 0xc4, 0x99, 0x4e, 0x65, 0x71, 0x2c, 0xb3, 0x45, 0xab, 0xfb, 0xe7, 0x72,
+0x39, 0x56, 0x30, 0x6d, 0xfb, 0x74, 0xeb, 0x99, 0xf3, 0xcd, 0x57, 0x5c, 0x78, 0x75, 0xe9,
+0x8d, 0xc3, 0xa2, 0xfb, 0x5d, 0xe0, 0x90, 0xc5, 0x55, 0xad, 0x91, 0x53, 0x4e, 0x9e, 0xbd,
+0x8c, 0x49, 0xa4, 0xa4, 0x69, 0x10, 0x0c, 0xc5, 0x76, 0xe9, 0x25, 0x86, 0x8d, 0x66, 0x23,
+0xa8, 0xdb, 0x5c, 0xe8, 0xd9, 0x30, 0xe1, 0x15, 0x7b, 0xc0, 0x99, 0x0f, 0x03, 0xec, 0xaa,
+0x12, 0xef, 0xce, 0xd4, 0xea, 0x55, 0x5c, 0x08, 0x86, 0xf4, 0xf4, 0xb0, 0x83, 0x42, 0x95,
+0x37, 0xb6, 0x38, 0xe0, 0x2b, 0x54, 0x89, 0xbd, 0x4e, 0x20, 0x9d, 0x3f, 0xc3, 0x4b, 0xb7,
+0xec, 0xfa, 0x5a, 0x14, 0x03, 0xcb, 0x64, 0xc8, 0x34, 0x4a, 0x4b, 0x6e, 0xf8, 0x6e, 0x56,
+0xf6, 0xdd, 0x5f, 0xa1, 0x24, 0xe2, 0xd4, 0xd0, 0x82, 0x64, 0x1f, 0x8e, 0x9b, 0xfa, 0xb4,
+0xcb, 0xdb, 0x0a, 0xe8, 0x15, 0xfc, 0x15, 0xab, 0x4b, 0x18, 0xbf, 0xd4, 0x42, 0x14, 0x48,
+0x82, 0x85, 0xdd, 0xeb, 0x49, 0x1b, 0x0b, 0x0b, 0x05, 0xe9, 0xb4, 0xa1, 0x33, 0x0a, 0x5d,
+0x0e, 0x6c, 0x4b, 0xc0, 0xd6, 0x6c, 0x7c, 0xfb, 0x69, 0x0b, 0x53, 0x19, 0xe4, 0xf3, 0x35,
+0xfc, 0xbe, 0xa1, 0x34, 0x02, 0x09, 0x4f, 0x74, 0x86, 0x92, 0xcd, 0x5d, 0x1a, 0xc1, 0x27,
+0x0c, 0xf2, 0xc5, 0xcf, 0xdd, 0x23, 0x93, 0x02, 0xbd, 0x41, 0x5e, 0x42, 0xf0, 0xa0, 0x9d,
+0x0c, 0x72, 0xc8, 0xec, 0x32, 0x0a, 0x8a, 0xfd, 0x3d, 0x5a, 0x41, 0x27, 0x0c, 0x88, 0x59,
+0xad, 0x94, 0x2e, 0xef, 0x5d, 0x8f, 0xc7, 0xdf, 0x66, 0xe4, 0xdd, 0x56, 0x6c, 0x7b, 0xca,
+0x55, 0x81, 0xae, 0xae, 0x5c, 0x1b, 0x1a, 0xab, 0xae, 0x99, 0x8d, 0xcc, 0x42, 0x97, 0x59,
+0xf4, 0x14, 0x3f, 0x75, 0xc6, 0xd1, 0x88, 0xba, 0xaa, 0x84, 0x4a, 0xd0, 0x34, 0x08, 0x3b,
+0x7d, 0xdb, 0x15, 0x06, 0xb0, 0x5c, 0xbd, 0x40, 0xf5, 0xa8, 0xec, 0xae, 0x36, 0x40, 0xdd,
+0x90, 0x1c, 0x3e, 0x0d, 0x7e, 0x73, 0xc7, 0xc2, 0xc5, 0x6a, 0xff, 0x52, 0x05, 0x7f, 0xbe,
+0xd0, 0x92, 0xfd, 0xb3, 0x6f, 0xff, 0x5d, 0xb7, 0x97, 0x64, 0x73, 0x7b, 0xca, 0xd1, 0x98,
+0x24, 0x6b, 0x0b, 0x01, 0x68, 0xdd, 0x27, 0x85, 0x85, 0xb5, 0x83, 0xc1, 0xe0, 0x50, 0x64,
+0xc7, 0xaf, 0xf1, 0xc6, 0x4d, 0xb1, 0xef, 0xc9, 0xb4, 0x0a, 0x6d, 0x65, 0xf3, 0x47, 0xcc,
+0xa3, 0x02, 0x21, 0x0c, 0xbe, 0x22, 0x29, 0x05, 0xcf, 0x5f, 0xe8, 0x94, 0x6c, 0xe5, 0xdc,
+0xc4, 0xdf, 0xbe, 0x3e, 0xa8, 0xb4, 0x18, 0xb0, 0x99, 0xb8, 0x6f, 0xff, 0x5d, 0xb9, 0xfd,
+0x3b, 0x5d, 0x16, 0xbf, 0x3e, 0xd8, 0xb3, 0xd8, 0x08, 0x34, 0xf6, 0x47, 0x35, 0x5b, 0x72,
+0x1a, 0x33, 0xad, 0x52, 0x5d, 0xb8, 0xd0, 0x77, 0xc6, 0xab, 0xba, 0x55, 0x09, 0x5f, 0x02,
+0xf8, 0xd4, 0x5f, 0x53, 0x06, 0x91, 0xcd, 0x74, 0x42, 0xae, 0x54, 0x91, 0x81, 0x62, 0x13,
+0x6f, 0xd8, 0xa9, 0x77, 0xc3, 0x6c, 0xcb, 0xf1, 0x29, 0x5a, 0xcc, 0xda, 0x35, 0xbd, 0x52,
+0x23, 0xbe, 0x59, 0xeb, 0x12, 0x6d, 0xb7, 0x53, 0xee, 0xfc, 0xb4, 0x1b, 0x13, 0x5e, 0xba,
+0x16, 0x7c, 0xc5, 0xf3, 0xe3, 0x6d, 0x07, 0x78, 0xf5, 0x2b, 0x21, 0x05, 0x88, 0x4c, 0xc0,
+0xa1, 0xe3, 0x36, 0x10, 0xf8, 0x1b, 0xd8, 0x17, 0xfb, 0x6a, 0x4e, 0xd8, 0xb3, 0x47, 0x2d,
+0x99, 0xbd, 0xbb, 0x5d, 0x37, 0x7d, 0xba, 0xf1, 0xe1, 0x7c, 0xc0, 0xc5, 0x54, 0x62, 0x7f,
+0xcf, 0x5a, 0x4a, 0x93, 0xcc, 0xf1, 0x1b, 0x34, 0xc8, 0xa6, 0x05, 0x4c, 0x55, 0x8b, 0x54,
+0x84, 0xd5, 0x77, 0xeb, 0xc0, 0x6d, 0x3a, 0x29, 0xbd, 0x75, 0x61, 0x09, 0x9a, 0x2c, 0xbb,
+0xf7, 0x18, 0x79, 0x34, 0x90, 0x24, 0xa5, 0x81, 0x70, 0x87, 0xc5, 0x02, 0x7c, 0xba, 0xd4,
+0x5e, 0x14, 0x8e, 0xe4, 0xed, 0xa2, 0x61, 0x6a, 0xb9, 0x6e, 0xb5, 0x4a, 0xb9, 0x01, 0x46,
+0xf4, 0xcf, 0xbc, 0x09, 0x2f, 0x27, 0x4b, 0xbd, 0x86, 0x7a, 0x10, 0xe1, 0xd4, 0xc8, 0xd9,
+0x20, 0x8d, 0x8a, 0x63, 0x00, 0x63, 0x44, 0xeb, 0x54, 0x0b, 0x75, 0x49, 0x10, 0xa2, 0xa7,
+0xad, 0xb9, 0xd1, 0x01, 0x80, 0x63, 0x25, 0xc8, 0x12, 0xa6, 0xce, 0x1e, 0xbe, 0xfe, 0x7e,
+0x5f, 0x3c, 0xdb, 0x34, 0xea, 0x37, 0xec, 0x3b, 0xd5, 0x28, 0xd2, 0x07, 0x8c, 0x9a, 0xb6,
+0xee, 0x5e, 0x3e, 0xdf, 0x1d, 0x99, 0xb0, 0xe2, 0x46, 0xef, 0x5c, 0x1b, 0xb4, 0xea, 0x56,
+0x2e, 0xde, 0x1f, 0x9d, 0xb8, 0xd3, 0x24, 0xab, 0xd4, 0x2a, 0xd6, 0x2e, 0xde, 0x1f, 0x9d,
+0xb8, 0xf2, 0x66, 0x2f, 0xbd, 0xf8, 0x72, 0x66, 0x4e, 0x1e, 0x9f, 0x9d, 0xb8, 0xf2, 0x47,
+0x0c, 0x9a, 0xb6, 0xee, 0x3f, 0xfc, 0x7a, 0x57, 0x0d, 0x79, 0x70, 0x62, 0x27, 0xad, 0xb9,
+0xd1, 0x01, 0x61, 0x40, 0x02, 0x67, 0x2d, 0xd8, 0x32, 0xe6, 0x2f, 0xdc, 0x3a, 0xd7, 0x2c,
+0xbb, 0xf4, 0x4b, 0xf5, 0x49, 0xf1, 0x60, 0x23, 0xc4, 0x0a, 0x77, 0x4d, 0xf9, 0x51, 0x01,
+0x80, 0x63, 0x25, 0xa9, 0xb1, 0xe0, 0x42, 0xe7, 0x4c, 0x1a, 0x97, 0xac, 0xbb, 0xf4, 0x6a,
+0x37, 0xcd, 0x18, 0xb2, 0xe6, 0x2f, 0xdc, 0x1b, 0x95, 0xa8, 0xd2, 0x07, 0x6d, 0x58, 0x32,
+0xe6, 0x4e, 0x1e, 0x9f, 0xbc, 0xfa, 0x57, 0x0d, 0x79, 0x51, 0x20, 0xc2, 0x06, 0x6f, 0x5c,
+0x1b, 0x95, 0xa8, 0xb3, 0xc5, 0xe9, 0x31, 0xe0, 0x23, 0xc4, 0x0a, 0x77, 0x4d, 0x18, 0x93,
+0x85, 0x69, 0x31, 0xc1, 0xe1, 0x21, 0xc0, 0xe3, 0x44, 0x0a, 0x77, 0x6c, 0x5a, 0x17, 0x8d,
+0x98, 0x93, 0xa4, 0xab, 0xd4, 0x2a, 0xb7, 0xec, 0x5a, 0x17, 0xac, 0xbb, 0xf4, 0x4b, 0x14,
+0xaa, 0xb7, 0xec, 0x3b, 0xd5, 0x28, 0xb3, 0xc5, 0xe9, 0x31, 0xc1, 0x00, 0x82, 0x67, 0x4c,
+0xfb, 0x55, 0x28, 0xd2, 0x26, 0xaf, 0xbd, 0xd9, 0x11, 0x81, 0x61, 0x21, 0xa1, 0xa1, 0xc0,
+0x02, 0x86, 0x6f, 0x5c, 0x1b, 0xb4, 0xcb, 0x14, 0x8b, 0x94, 0xaa, 0xd6, 0x2e, 0xbf, 0xdd,
+0x19, 0xb0, 0xe2, 0x46, 0x0e, 0x7f, 0x7c, 0x5b, 0x15, 0x89, 0x90, 0x83, 0x84, 0x6b, 0x54,
+0x0b, 0x75, 0x68, 0x52, 0x07, 0x6d, 0x58, 0x32, 0xc7, 0xed, 0x58, 0x32, 0xc7, 0xed, 0x58,
+0x32, 0xe6, 0x4e, 0xff, 0x7c, 0x7a, 0x76, 0x6e, 0x3f, 0xdd, 0x38, 0xd3, 0x05, 0x88, 0x92,
+0xa6, 0xaf, 0xdc, 0x1b, 0xb4, 0xcb, 0xf5, 0x68, 0x52, 0x07, 0x8c, 0x7b, 0x55, 0x09, 0x90,
+0x83, 0x84, 0x6b, 0x54, 0x2a, 0xb7, 0xec, 0x3b, 0xd5, 0x09, 0x90, 0xa2, 0xc6, 0x0e, 0x7f,
+0x7c, 0x7a, 0x57, 0x0d, 0x98, 0xb2, 0xc7, 0xed, 0x58, 0x32, 0xc7, 0x0c, 0x7b, 0x74, 0x4b,
+0x14, 0x8b, 0x94, 0xaa, 0xb7, 0xcd, 0x18, 0x93, 0xa4, 0xca, 0x16, 0xae, 0xbf, 0xdd, 0x19,
+0xb0, 0xe2, 0x46, 0x0e, 0x7f, 0x5d, 0x19, 0x91, 0x81, 0x80, 0x63, 0x44, 0xeb, 0x35, 0xc9,
+0x10, 0x83, 0x65, 0x48, 0x12, 0xa6, 0xce, 0x1e, 0x9f, 0xbc, 0xdb, 0x15, 0x89, 0x71, 0x60,
+0x23, 0xc4, 0xeb, 0x54, 0x2a, 0xb7, 0xec, 0x5a, 0x36, 0xcf, 0x81, 0x10, 0xac, 0x74 };
+
+// clang-format off
diff --git a/drivers/ugfx/gdisp/is31fl3731c/board_is31fl3731c_template.h b/drivers/ugfx/gdisp/is31fl3731c/board_is31fl3731c_template.h
deleted file mode 100644
index 0755ddf6c4f..00000000000
--- a/drivers/ugfx/gdisp/is31fl3731c/board_is31fl3731c_template.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
-Copyright 2016 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 .
-*/
-
-#ifndef _GDISP_LLD_BOARD_H
-#define _GDISP_LLD_BOARD_H
-
-static const I2CConfig i2ccfg = {
- 400000 // clock speed (Hz); 400kHz max for IS31
-};
-
-static const uint8_t led_mask[] = {
- 0xFF, 0x00, /* C1-1 -> C1-16 */
- 0xFF, 0x00, /* C2-1 -> C2-16 */
- 0xFF, 0x00, /* C3-1 -> C3-16 */
- 0xFF, 0x00, /* C4-1 -> C4-16 */
- 0x3F, 0x00, /* C5-1 -> C5-16 */
- 0x00, 0x00, /* C6-1 -> C6-16 */
- 0x00, 0x00, /* C7-1 -> C7-16 */
- 0x00, 0x00, /* C8-1 -> C8-16 */
- 0x00, 0x00, /* C9-1 -> C9-16 */
-};
-
-// The address of the LED
-#define LA(c, r) (c + r * 16)
-// Need to be an address that is not mapped, but inside the range of the controller matrix
-#define NA LA(8, 8)
-
-// The numbers in the comments are the led numbers DXX on the PCB
-// The mapping is taken from the schematic of left hand side
-static const uint8_t led_mapping[GDISP_SCREEN_HEIGHT][GDISP_SCREEN_WIDTH] = {
- // 45 44 43 42 41 40 39
- {LA(1, 1), LA(1, 0), LA(0, 4), LA(0, 3), LA(0, 2), LA(0, 1), LA(0, 0)},
- // 52 51 50 49 48 47 46
- {LA(2, 3), LA(2, 2), LA(2, 1), LA(2, 0), LA(1, 4), LA(1, 3), LA(1, 2)},
- // 58 57 56 55 54 53 N/A
- {LA(3, 4), LA(3, 3), LA(3, 2), LA(3, 1), LA(3, 0), LA(2, 4), NA},
- // 67 66 65 64 63 62 61
- {LA(5, 3), LA(5, 2), LA(5, 1), LA(5, 0), LA(4, 4), LA(4, 3), LA(4, 2)},
- // 76 75 74 73 72 60 59
- {LA(7, 3), LA(7, 2), LA(7, 1), LA(7, 0), LA(6, 3), LA(4, 1), LA(4, 0)},
- // N/A N/A N/A N/A N/A N/A 68
- {NA, NA, NA, NA, NA, NA, LA(5, 4)},
- // N/A N/A N/A N/A 71 70 69
- {NA, NA, NA, NA, LA(6, 2), LA(6, 1), LA(6, 0)},
-};
-
-#define IS31_ADDR_DEFAULT 0x74 // AD connected to GND
-#define IS31_TIMEOUT 5000
-
-static GFXINLINE void init_board(GDisplay* g) {
- (void)g;
- /* I2C pins */
- palSetPadMode(GPIOB, 0, PAL_MODE_ALTERNATIVE_2); // PTB0/I2C0/SCL
- palSetPadMode(GPIOB, 1, PAL_MODE_ALTERNATIVE_2); // PTB1/I2C0/SDA
- palSetPadMode(GPIOB, 16, PAL_MODE_OUTPUT_PUSHPULL);
- palClearPad(GPIOB, 16);
- /* start I2C */
- i2cStart(&I2CD1, &i2ccfg);
- // try high drive (from kiibohd)
- I2CD1.i2c->C2 |= I2Cx_C2_HDRS;
- // try glitch fixing (from kiibohd)
- I2CD1.i2c->FLT = 4;
-}
-
-static GFXINLINE void post_init_board(GDisplay* g) { (void)g; }
-
-static GFXINLINE const uint8_t* get_led_mask(GDisplay* g) {
- (void)g;
- return led_mask;
-}
-
-static GFXINLINE uint8_t get_led_address(GDisplay* g, uint16_t x, uint16_t y) {
- (void)g;
- return led_mapping[y][x];
-}
-
-static GFXINLINE void set_hardware_shutdown(GDisplay* g, bool shutdown) {
- (void)g;
- if (!shutdown) {
- palSetPad(GPIOB, 16);
- } else {
- palClearPad(GPIOB, 16);
- }
-}
-
-static GFXINLINE void write_data(GDisplay* g, uint8_t* data, uint16_t length) {
- (void)g;
- i2cMasterTransmitTimeout(&I2CD1, IS31_ADDR_DEFAULT, data, length, 0, 0, US2ST(IS31_TIMEOUT));
-}
-
-#endif /* _GDISP_LLD_BOARD_H */
diff --git a/drivers/ugfx/gdisp/is31fl3731c/driver.mk b/drivers/ugfx/gdisp/is31fl3731c/driver.mk
deleted file mode 100644
index a53131bf33b..00000000000
--- a/drivers/ugfx/gdisp/is31fl3731c/driver.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-GFXINC += drivers/ugfx/gdisp/is31fl3731c
-GFXSRC += drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
-GDISP_DRIVER_LIST += GDISPVMT_IS31FL3731C_QMK
diff --git a/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c b/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
deleted file mode 100644
index 71882440222..00000000000
--- a/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
-Copyright 2016 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 .
-*/
-
-#include "gfx.h"
-
-#if GFX_USE_GDISP
-
-# define GDISP_DRIVER_VMT GDISPVMT_IS31FL3731C_QMK
-# define GDISP_SCREEN_HEIGHT LED_HEIGHT
-# define GDISP_SCREEN_WIDTH LED_WIDTH
-
-# include "gdisp_lld_config.h"
-# include "src/gdisp/gdisp_driver.h"
-
-# include "board_is31fl3731c.h"
-
-// Can't include led_tables from here
-extern const uint8_t CIE1931_CURVE[];
-
-/*===========================================================================*/
-/* Driver local definitions. */
-/*===========================================================================*/
-
-# ifndef GDISP_INITIAL_CONTRAST
-# define GDISP_INITIAL_CONTRAST 0
-# endif
-# ifndef GDISP_INITIAL_BACKLIGHT
-# define GDISP_INITIAL_BACKLIGHT 0
-# endif
-
-# define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER << 0)
-
-# define IS31_ADDR_DEFAULT 0x74
-
-# define IS31_REG_CONFIG 0x00
-// bits in reg
-# define IS31_REG_CONFIG_PICTUREMODE 0x00
-# define IS31_REG_CONFIG_AUTOPLAYMODE 0x08
-# define IS31_REG_CONFIG_AUDIOPLAYMODE 0x18
-// D2:D0 bits are starting frame for autoplay mode
-
-# define IS31_REG_PICTDISP 0x01 // D2:D0 frame select for picture mode
-
-# define IS31_REG_AUTOPLAYCTRL1 0x02
-// D6:D4 number of loops (000=infty)
-// D2:D0 number of frames to be used
-
-# define IS31_REG_AUTOPLAYCTRL2 0x03 // D5:D0 delay time (*11ms)
-
-# define IS31_REG_DISPLAYOPT 0x05
-# define IS31_REG_DISPLAYOPT_INTENSITY_SAME 0x20 // same intensity for all frames
-# define IS31_REG_DISPLAYOPT_BLINK_ENABLE 0x8
-// D2:D0 bits blink period time (*0.27s)
-
-# define IS31_REG_AUDIOSYNC 0x06
-# define IS31_REG_AUDIOSYNC_ENABLE 0x1
-
-# define IS31_REG_FRAMESTATE 0x07
-
-# define IS31_REG_BREATHCTRL1 0x08
-// D6:D4 fade out time (26ms*2^i)
-// D2:D0 fade in time (26ms*2^i)
-
-# define IS31_REG_BREATHCTRL2 0x09
-# define IS31_REG_BREATHCTRL2_ENABLE 0x10
-// D2:D0 extinguish time (3.5ms*2^i)
-
-# define IS31_REG_SHUTDOWN 0x0A
-# define IS31_REG_SHUTDOWN_OFF 0x0
-# define IS31_REG_SHUTDOWN_ON 0x1
-
-# define IS31_REG_AGCCTRL 0x0B
-# define IS31_REG_ADCRATE 0x0C
-
-# define IS31_COMMANDREGISTER 0xFD
-# define IS31_FUNCTIONREG 0x0B // helpfully called 'page nine'
-# define IS31_FUNCTIONREG_SIZE 0xD
-
-# define IS31_FRAME_SIZE 0xB4
-
-# define IS31_PWM_REG 0x24
-# define IS31_PWM_SIZE 0x90
-
-# define IS31_LED_MASK_SIZE 0x12
-
-# define IS31
-
-/*===========================================================================*/
-/* Driver local functions. */
-/*===========================================================================*/
-
-typedef struct {
- uint8_t write_buffer_offset;
- uint8_t write_buffer[IS31_FRAME_SIZE];
- uint8_t frame_buffer[GDISP_SCREEN_HEIGHT * GDISP_SCREEN_WIDTH];
- uint8_t page;
-} __attribute__((__packed__)) PrivData;
-
-// Some common routines and macros
-# define PRIV(g) ((PrivData *)g->priv)
-
-/*===========================================================================*/
-/* Driver exported functions. */
-/*===========================================================================*/
-
-static GFXINLINE void write_page(GDisplay *g, uint8_t page) {
- uint8_t tx[2] __attribute__((aligned(2)));
- tx[0] = IS31_COMMANDREGISTER;
- tx[1] = page;
- write_data(g, tx, 2);
-}
-
-static GFXINLINE void write_register(GDisplay *g, uint8_t page, uint8_t reg, uint8_t data) {
- uint8_t tx[2] __attribute__((aligned(2)));
- tx[0] = reg;
- tx[1] = data;
- write_page(g, page);
- write_data(g, tx, 2);
-}
-
-static GFXINLINE void write_ram(GDisplay *g, uint8_t page, uint16_t offset, uint16_t length) {
- PRIV(g)->write_buffer_offset = offset;
- write_page(g, page);
- write_data(g, (uint8_t *)PRIV(g), length + 1);
-}
-
-LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
- // The private area is the display surface.
- g->priv = gfxAlloc(sizeof(PrivData));
- __builtin_memset(PRIV(g), 0, sizeof(PrivData));
- PRIV(g)->page = 0;
-
- // Initialise the board interface
- init_board(g);
- gfxSleepMilliseconds(10);
-
- // zero function page, all registers (assuming full_page is all zeroes)
- write_ram(g, IS31_FUNCTIONREG, 0, IS31_FUNCTIONREG_SIZE);
- set_hardware_shutdown(g, false);
- gfxSleepMilliseconds(10);
- // software shutdown
- write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
- gfxSleepMilliseconds(10);
- // zero function page, all registers
- write_ram(g, IS31_FUNCTIONREG, 0, IS31_FUNCTIONREG_SIZE);
- gfxSleepMilliseconds(10);
-
- // zero all LED registers on all 8 pages, and enable the mask
- __builtin_memcpy(PRIV(g)->write_buffer, get_led_mask(g), IS31_LED_MASK_SIZE);
- for (uint8_t i = 0; i < 8; i++) {
- write_ram(g, i, 0, IS31_FRAME_SIZE);
- gfxSleepMilliseconds(1);
- }
-
- // software shutdown disable (i.e. turn stuff on)
- write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
- gfxSleepMilliseconds(10);
-
- // Finish Init
- post_init_board(g);
-
- /* Initialise the GDISP structure */
- g->g.Width = GDISP_SCREEN_WIDTH;
- g->g.Height = GDISP_SCREEN_HEIGHT;
- g->g.Orientation = GDISP_ROTATE_0;
- g->g.Powermode = powerOff;
- g->g.Backlight = GDISP_INITIAL_BACKLIGHT;
- g->g.Contrast = GDISP_INITIAL_CONTRAST;
- return TRUE;
-}
-
-# if GDISP_HARDWARE_FLUSH
-LLDSPEC void gdisp_lld_flush(GDisplay *g) {
- // Don't flush if we don't need it.
- if (!(g->flags & GDISP_FLG_NEEDFLUSH)) return;
-
- PRIV(g)->page++;
- PRIV(g)->page %= 2;
- // TODO: some smarter algorithm for this
- // We should run only one physical page at a time
- // This way we don't need to send so much data, and
- // we could use slightly less memory
- uint8_t *src = PRIV(g)->frame_buffer;
- for (int y = 0; y < GDISP_SCREEN_HEIGHT; y++) {
- for (int x = 0; x < GDISP_SCREEN_WIDTH; x++) {
- uint8_t val = (uint16_t)*src * g->g.Backlight / 100;
- PRIV(g)->write_buffer[get_led_address(g, x, y)] = CIE1931_CURVE[val];
- ++src;
- }
- }
- write_ram(g, PRIV(g)->page, IS31_PWM_REG, IS31_PWM_SIZE);
- gfxSleepMilliseconds(1);
- write_register(g, IS31_FUNCTIONREG, IS31_REG_PICTDISP, PRIV(g)->page);
-
- g->flags &= ~GDISP_FLG_NEEDFLUSH;
-}
-# endif
-
-# if GDISP_HARDWARE_DRAWPIXEL
-LLDSPEC void gdisp_lld_draw_pixel(GDisplay *g) {
- coord_t x, y;
-
- switch (g->g.Orientation) {
- default:
- case GDISP_ROTATE_0:
- x = g->p.x;
- y = g->p.y;
- break;
- case GDISP_ROTATE_180:
- x = GDISP_SCREEN_WIDTH - 1 - g->p.x;
- y = g->p.y;
- break;
- }
- PRIV(g)->frame_buffer[y * GDISP_SCREEN_WIDTH + x] = gdispColor2Native(g->p.color);
- g->flags |= GDISP_FLG_NEEDFLUSH;
-}
-# endif
-
-# if GDISP_HARDWARE_PIXELREAD
-LLDSPEC color_t gdisp_lld_get_pixel_color(GDisplay *g) {
- coord_t x, y;
-
- switch (g->g.Orientation) {
- default:
- case GDISP_ROTATE_0:
- x = g->p.x;
- y = g->p.y;
- break;
- case GDISP_ROTATE_180:
- x = GDISP_SCREEN_WIDTH - 1 - g->p.x;
- y = g->p.y;
- break;
- }
- return gdispNative2Color(PRIV(g)->frame_buffer[y * GDISP_SCREEN_WIDTH + x]);
-}
-# endif
-
-# if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL
-LLDSPEC void gdisp_lld_control(GDisplay *g) {
- switch (g->p.x) {
- case GDISP_CONTROL_POWER:
- if (g->g.Powermode == (powermode_t)g->p.ptr) return;
- switch ((powermode_t)g->p.ptr) {
- case powerOff:
- case powerSleep:
- case powerDeepSleep:
- write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
- break;
- case powerOn:
- write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_ON);
- break;
- default:
- return;
- }
- g->g.Powermode = (powermode_t)g->p.ptr;
- return;
-
- case GDISP_CONTROL_ORIENTATION:
- if (g->g.Orientation == (orientation_t)g->p.ptr) return;
- switch ((orientation_t)g->p.ptr) {
- /* Rotation is handled by the drawing routines */
- case GDISP_ROTATE_0:
- case GDISP_ROTATE_180:
- g->g.Height = GDISP_SCREEN_HEIGHT;
- g->g.Width = GDISP_SCREEN_WIDTH;
- break;
- case GDISP_ROTATE_90:
- case GDISP_ROTATE_270:
- g->g.Height = GDISP_SCREEN_WIDTH;
- g->g.Width = GDISP_SCREEN_HEIGHT;
- break;
- default:
- return;
- }
- g->g.Orientation = (orientation_t)g->p.ptr;
- return;
-
- case GDISP_CONTROL_BACKLIGHT:
- if (g->g.Backlight == (unsigned)g->p.ptr) return;
- unsigned val = (unsigned)g->p.ptr;
- g->g.Backlight = val > 100 ? 100 : val;
- g->flags |= GDISP_FLG_NEEDFLUSH;
- return;
- }
-}
-# endif // GDISP_NEED_CONTROL
-
-#endif // GFX_USE_GDISP
diff --git a/drivers/ugfx/gdisp/is31fl3731c/gdisp_lld_config.h b/drivers/ugfx/gdisp/is31fl3731c/gdisp_lld_config.h
deleted file mode 100644
index 403c6b0409c..00000000000
--- a/drivers/ugfx/gdisp/is31fl3731c/gdisp_lld_config.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-Copyright 2016 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 .
-*/
-
-#ifndef _GDISP_LLD_CONFIG_H
-#define _GDISP_LLD_CONFIG_H
-
-#if GFX_USE_GDISP
-
-/*===========================================================================*/
-/* Driver hardware support. */
-/*===========================================================================*/
-
-# define GDISP_HARDWARE_FLUSH GFXON // This controller requires flushing
-# define GDISP_HARDWARE_DRAWPIXEL GFXON
-# define GDISP_HARDWARE_PIXELREAD GFXON
-# define GDISP_HARDWARE_CONTROL GFXON
-
-# define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_GRAY256
-
-#endif /* GFX_USE_GDISP */
-
-#endif /* _GDISP_LLD_CONFIG_H */
diff --git a/drivers/ugfx/gdisp/st7565/board_st7565_template.h b/drivers/ugfx/gdisp/st7565/board_st7565_template.h
deleted file mode 100644
index 875ed9e65c6..00000000000
--- a/drivers/ugfx/gdisp/st7565/board_st7565_template.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * This file is subject to the terms of the GFX License. If a copy of
- * the license was not distributed with this file, you can obtain one at:
- *
- * http://ugfx.org/license.html
- */
-
-#ifndef _GDISP_LLD_BOARD_H
-#define _GDISP_LLD_BOARD_H
-
-#include "quantum.h"
-
-#define ST7565_LCD_BIAS ST7565_LCD_BIAS_7
-#define ST7565_COM_SCAN ST7565_COM_SCAN_DEC
-#define ST7565_PAGE_ORDER 0, 1, 2, 3
-/*
- * Custom page order for several LCD boards, e.g. HEM12864-99
- * #define ST7565_PAGE_ORDER 4,5,6,7,0,1,2,3
- */
-
-#define ST7565_A0_PIN C7
-#define ST7565_RST_PIN C8
-#define ST7565_MOSI_PIN C6
-#define ST7565_SCLK_PIN C5
-#define ST7565_SS_PIN C4
-
-// DSPI Clock and Transfer Attributes
-// Frame Size: 8 bits
-// MSB First
-// CLK Low by default
-static const SPIConfig spi1config = {
- // Operation complete callback or @p NULL.
- .end_cb = NULL,
- // The chip select line port - when not using pcs.
- .ssport = PAL_PORT(ST7565_SS_PIN),
- // brief The chip select line pad number - when not using pcs.
- .sspad = PAL_PAD(ST7565_SS_PIN),
- // SPI initialization data.
- .tar0 = SPIx_CTARn_FMSZ(7) // Frame size = 8 bytes
- | SPIx_CTARn_ASC(1) // After SCK Delay Scaler (min 50 ns) = 55.56ns
- | SPIx_CTARn_DT(0) // Delay After Transfer Scaler (no minimum)= 27.78ns
- | SPIx_CTARn_CSSCK(0) // PCS to SCK Delay Scaler (min 20 ns) = 27.78ns
- | SPIx_CTARn_PBR(0) // Baud Rate Prescaler = 2
- | SPIx_CTARn_BR(0) // Baud rate (min 50ns) = 55.56ns
-};
-
-static GFXINLINE void acquire_bus(GDisplay *g) {
- (void)g;
- // Only the LCD is using the SPI bus, so no need to acquire
- // spiAcquireBus(&SPID1);
- spiSelect(&SPID1);
-}
-
-static GFXINLINE void release_bus(GDisplay *g) {
- (void)g;
- // Only the LCD is using the SPI bus, so no need to release
- // spiReleaseBus(&SPID1);
- spiUnselect(&SPID1);
-}
-
-static GFXINLINE void init_board(GDisplay *g) {
- (void)g;
- setPinOutput(ST7565_A0_PIN);
- writePinHigh(ST7565_A0_PIN);
- setPinOutput(ST7565_RST_PIN);
- writePinHigh(ST7565_RST_PIN);
- setPinOutput(ST7565_SS_PIN);
-
- palSetPadMode(PAL_PORT(ST7565_MOSI_PIN), PAL_PAD(ST7565_MOSI_PIN), PAL_MODE_ALTERNATIVE_2);
- palSetPadMode(PAL_PORT(ST7565_SCLK_PIN), PAL_PAD(ST7565_SCLK_PIN), PAL_MODE_ALTERNATIVE_2);
-
- spiInit();
- spiStart(&SPID1, &spi1config);
- release_bus(g);
-}
-
-static GFXINLINE void post_init_board(GDisplay *g) { (void)g; }
-
-static GFXINLINE void setpin_reset(GDisplay *g, bool_t state) {
- (void)g;
- writePin(ST7565_RST_PIN, !state);
-}
-
-static GFXINLINE void write_cmd(GDisplay *g, gU8 cmd) {
- (void)g;
- writePinLow(ST7565_A0_PIN);
- spiSend(&SPID1, 1, &cmd);
-}
-
-static GFXINLINE void write_data(GDisplay *g, gU8 *data, gU16 length) {
- (void)g;
- writePinHigh(ST7565_A0_PIN);
- spiSend(&SPID1, length, data);
-}
-
-#endif /* _GDISP_LLD_BOARD_H */
diff --git a/drivers/ugfx/gdisp/st7565/driver.mk b/drivers/ugfx/gdisp/st7565/driver.mk
deleted file mode 100644
index 799a986b0a8..00000000000
--- a/drivers/ugfx/gdisp/st7565/driver.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-GFXINC += drivers/ugfx/gdisp/st7565
-GFXSRC += drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
-GDISP_DRIVER_LIST += GDISPVMT_ST7565_QMK
diff --git a/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c b/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
deleted file mode 100644
index f586f97e385..00000000000
--- a/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- * This file is subject to the terms of the GFX License. If a copy of
- * the license was not distributed with this file, you can obtain one at:
- *
- * http://ugfx.org/license.html
- */
-
-#include "gfx.h"
-
-#if GFX_USE_GDISP
-
-# define GDISP_DRIVER_VMT GDISPVMT_ST7565_QMK
-# include "gdisp_lld_config.h"
-# include "src/gdisp/gdisp_driver.h"
-
-# include "board_st7565.h"
-
-/*===========================================================================*/
-/* Driver local definitions. */
-/*===========================================================================*/
-
-# ifndef GDISP_SCREEN_HEIGHT
-# define GDISP_SCREEN_HEIGHT LCD_HEIGHT
-# endif
-# ifndef GDISP_SCREEN_WIDTH
-# define GDISP_SCREEN_WIDTH LCD_WIDTH
-# endif
-# ifndef GDISP_INITIAL_CONTRAST
-# define GDISP_INITIAL_CONTRAST 35
-# endif
-# ifndef GDISP_INITIAL_BACKLIGHT
-# define GDISP_INITIAL_BACKLIGHT 100
-# endif
-
-# define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER << 0)
-
-# include "st7565.h"
-
-/*===========================================================================*/
-/* Driver config defaults for backward compatibility. */
-/*===========================================================================*/
-# ifndef ST7565_LCD_BIAS
-# define ST7565_LCD_BIAS ST7565_LCD_BIAS_7
-# endif
-# ifndef ST7565_ADC
-# define ST7565_ADC ST7565_ADC_NORMAL
-# endif
-# ifndef ST7565_COM_SCAN
-# define ST7565_COM_SCAN ST7565_COM_SCAN_INC
-# endif
-# ifndef ST7565_PAGE_ORDER
-# define ST7565_PAGE_ORDER 0, 1, 2, 3, 4, 5, 6, 7
-# endif
-
-/*===========================================================================*/
-/* Driver local functions. */
-/*===========================================================================*/
-
-// Some common routines and macros
-# define RAM(g) ((gU8 *)g->priv)
-# define write_cmd2(g, cmd1, cmd2) \
- { \
- write_cmd(g, cmd1); \
- write_cmd(g, cmd2); \
- }
-# define write_cmd3(g, cmd1, cmd2, cmd3) \
- { \
- write_cmd(g, cmd1); \
- write_cmd(g, cmd2); \
- write_cmd(g, cmd3); \
- }
-
-// Some common routines and macros
-# define delay(us) gfxSleepMicroseconds(us)
-# define delay_ms(ms) gfxSleepMilliseconds(ms)
-
-# define xyaddr(x, y) ((x) + ((y) >> 3) * GDISP_SCREEN_WIDTH)
-# define xybit(y) (1 << ((y)&7))
-
-/*===========================================================================*/
-/* Driver exported functions. */
-/*===========================================================================*/
-
-/*
- * As this controller can't update on a pixel boundary we need to maintain the
- * the entire display surface in memory so that we can do the necessary bit
- * operations. Fortunately it is a small display in monochrome.
- * 64 * 128 / 8 = 1024 bytes.
- */
-
-LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
- // The private area is the display surface.
- g->priv = gfxAlloc(GDISP_SCREEN_HEIGHT * GDISP_SCREEN_WIDTH / 8);
- if (!g->priv) {
- return gFalse;
- }
-
- // Initialise the board interface
- init_board(g);
-
- // Hardware reset
- setpin_reset(g, TRUE);
- gfxSleepMilliseconds(20);
- setpin_reset(g, FALSE);
- gfxSleepMilliseconds(20);
- acquire_bus(g);
-
- write_cmd(g, ST7565_LCD_BIAS);
- write_cmd(g, ST7565_ADC);
- write_cmd(g, ST7565_COM_SCAN);
-
- write_cmd(g, ST7565_START_LINE | 0);
-
- write_cmd2(g, ST7565_CONTRAST, GDISP_INITIAL_CONTRAST * 64 / 101);
- write_cmd(g, ST7565_RESISTOR_RATIO | 0x1);
-
- // turn on voltage converter (VC=1, VR=0, VF=0)
- write_cmd(g, ST7565_POWER_CONTROL | 0x04);
- delay_ms(50);
-
- // turn on voltage regulator (VC=1, VR=1, VF=0)
- write_cmd(g, ST7565_POWER_CONTROL | 0x06);
- delay_ms(50);
-
- // turn on voltage follower (VC=1, VR=1, VF=1)
- write_cmd(g, ST7565_POWER_CONTROL | 0x07);
- delay_ms(50);
-
- write_cmd(g, ST7565_DISPLAY_ON);
- write_cmd(g, ST7565_ALLON_NORMAL);
- write_cmd(g, ST7565_INVERT_DISPLAY); // Disable Inversion of display.
-
- write_cmd(g, ST7565_RMW);
-
- // Finish Init
- post_init_board(g);
-
- // Release the bus
- release_bus(g);
-
- /* Initialise the GDISP structure */
- g->g.Width = GDISP_SCREEN_WIDTH;
- g->g.Height = GDISP_SCREEN_HEIGHT;
- g->g.Orientation = GDISP_ROTATE_0;
- g->g.Powermode = powerOff;
- g->g.Backlight = GDISP_INITIAL_BACKLIGHT;
- g->g.Contrast = GDISP_INITIAL_CONTRAST;
- return TRUE;
-}
-
-# if GDISP_HARDWARE_FLUSH
-LLDSPEC void gdisp_lld_flush(GDisplay *g) {
- unsigned p;
-
- // Don't flush if we don't need it.
- if (!(g->flags & GDISP_FLG_NEEDFLUSH)) return;
-
- acquire_bus(g);
- gU8 pagemap[] = {ST7565_PAGE_ORDER};
- for (p = 0; p < sizeof(pagemap); p++) {
- write_cmd(g, ST7565_PAGE | pagemap[p]);
- write_cmd(g, ST7565_COLUMN_MSB | 0);
- write_cmd(g, ST7565_COLUMN_LSB | 0);
- write_cmd(g, ST7565_RMW);
- write_data(g, RAM(g) + (p * GDISP_SCREEN_WIDTH), GDISP_SCREEN_WIDTH);
- }
- release_bus(g);
-
- g->flags &= ~GDISP_FLG_NEEDFLUSH;
-}
-# endif
-
-# if GDISP_HARDWARE_DRAWPIXEL
-LLDSPEC void gdisp_lld_draw_pixel(GDisplay *g) {
- coord_t x, y;
-
- switch (g->g.Orientation) {
- default:
- case GDISP_ROTATE_0:
- x = g->p.x;
- y = g->p.y;
- break;
- case GDISP_ROTATE_90:
- x = g->p.y;
- y = GDISP_SCREEN_HEIGHT - 1 - g->p.x;
- break;
- case GDISP_ROTATE_180:
- x = GDISP_SCREEN_WIDTH - 1 - g->p.x;
- y = GDISP_SCREEN_HEIGHT - 1 - g->p.y;
- break;
- case GDISP_ROTATE_270:
- x = GDISP_SCREEN_HEIGHT - 1 - g->p.y;
- y = g->p.x;
- break;
- }
- if (gdispColor2Native(g->p.color) != Black)
- RAM(g)[xyaddr(x, y)] |= xybit(y);
- else
- RAM(g)[xyaddr(x, y)] &= ~xybit(y);
- g->flags |= GDISP_FLG_NEEDFLUSH;
-}
-# endif
-
-# if GDISP_HARDWARE_PIXELREAD
-LLDSPEC color_t gdisp_lld_get_pixel_color(GDisplay *g) {
- coord_t x, y;
-
- switch (g->g.Orientation) {
- default:
- case GDISP_ROTATE_0:
- x = g->p.x;
- y = g->p.y;
- break;
- case GDISP_ROTATE_90:
- x = g->p.y;
- y = GDISP_SCREEN_HEIGHT - 1 - g->p.x;
- break;
- case GDISP_ROTATE_180:
- x = GDISP_SCREEN_WIDTH - 1 - g->p.x;
- y = GDISP_SCREEN_HEIGHT - 1 - g->p.y;
- break;
- case GDISP_ROTATE_270:
- x = GDISP_SCREEN_HEIGHT - 1 - g->p.y;
- y = g->p.x;
- break;
- }
- return (RAM(g)[xyaddr(x, y)] & xybit(y)) ? White : Black;
-}
-# endif
-
-# if GDISP_HARDWARE_BITFILLS
-LLDSPEC void gdisp_lld_blit_area(GDisplay *g) {
- uint8_t *buffer = (uint8_t *)g->p.ptr;
- int linelength = g->p.cx;
- for (int i = 0; i < g->p.cy; i++) {
- unsigned dstx = g->p.x;
- unsigned dsty = g->p.y + i;
- unsigned srcx = g->p.x1;
- unsigned srcy = g->p.y1 + i;
- unsigned srcbit = srcy * g->p.x2 + srcx;
- for (int j = 0; j < linelength; j++) {
- uint8_t src = buffer[srcbit / 8];
- uint8_t bit = 7 - (srcbit % 8);
- uint8_t bitset = (src >> bit) & 1;
- uint8_t *dst = &(RAM(g)[xyaddr(dstx, dsty)]);
- if (bitset) {
- *dst |= xybit(dsty);
- } else {
- *dst &= ~xybit(dsty);
- }
- dstx++;
- srcbit++;
- }
- }
- g->flags |= GDISP_FLG_NEEDFLUSH;
-}
-# endif
-
-# if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL
-LLDSPEC void gdisp_lld_control(GDisplay *g) {
- switch (g->p.x) {
- case GDISP_CONTROL_POWER:
- if (g->g.Powermode == (powermode_t)g->p.ptr) return;
- switch ((powermode_t)g->p.ptr) {
- case powerOff:
- case powerSleep:
- case powerDeepSleep:
- acquire_bus(g);
- write_cmd(g, ST7565_DISPLAY_OFF);
- release_bus(g);
- break;
- case powerOn:
- acquire_bus(g);
- write_cmd(g, ST7565_DISPLAY_ON);
- release_bus(g);
- break;
- default:
- return;
- }
- g->g.Powermode = (powermode_t)g->p.ptr;
- return;
-
- case GDISP_CONTROL_ORIENTATION:
- if (g->g.Orientation == (orientation_t)g->p.ptr) return;
- switch ((orientation_t)g->p.ptr) {
- /* Rotation is handled by the drawing routines */
- case GDISP_ROTATE_0:
- case GDISP_ROTATE_180:
- g->g.Height = GDISP_SCREEN_HEIGHT;
- g->g.Width = GDISP_SCREEN_WIDTH;
- break;
- case GDISP_ROTATE_90:
- case GDISP_ROTATE_270:
- g->g.Height = GDISP_SCREEN_WIDTH;
- g->g.Width = GDISP_SCREEN_HEIGHT;
- break;
- default:
- return;
- }
- g->g.Orientation = (orientation_t)g->p.ptr;
- return;
-
- case GDISP_CONTROL_CONTRAST:
- if ((unsigned)g->p.ptr > 100) g->p.ptr = (void *)100;
- acquire_bus(g);
- write_cmd2(g, ST7565_CONTRAST, ((((unsigned)g->p.ptr) << 6) / 101) & 0x3F);
- release_bus(g);
- g->g.Contrast = (unsigned)g->p.ptr;
- return;
- }
-}
-# endif // GDISP_NEED_CONTROL
-
-#endif // GFX_USE_GDISP
diff --git a/drivers/ugfx/gdisp/st7565/gdisp_lld_config.h b/drivers/ugfx/gdisp/st7565/gdisp_lld_config.h
deleted file mode 100644
index 6052058ec23..00000000000
--- a/drivers/ugfx/gdisp/st7565/gdisp_lld_config.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * This file is subject to the terms of the GFX License. If a copy of
- * the license was not distributed with this file, you can obtain one at:
- *
- * http://ugfx.org/license.html
- */
-
-#ifndef _GDISP_LLD_CONFIG_H
-#define _GDISP_LLD_CONFIG_H
-
-#if GFX_USE_GDISP
-
-/*===========================================================================*/
-/* Driver hardware support. */
-/*===========================================================================*/
-
-# define GDISP_HARDWARE_FLUSH GFXON // This controller requires flushing
-# define GDISP_HARDWARE_DRAWPIXEL GFXON
-# define GDISP_HARDWARE_PIXELREAD GFXON
-# define GDISP_HARDWARE_CONTROL GFXON
-# define GDISP_HARDWARE_BITFILLS GFXON
-
-# define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_MONO
-
-#endif /* GFX_USE_GDISP */
-
-#endif /* _GDISP_LLD_CONFIG_H */
diff --git a/drivers/ugfx/gdisp/st7565/st7565.h b/drivers/ugfx/gdisp/st7565/st7565.h
deleted file mode 100644
index 3c77a88569a..00000000000
--- a/drivers/ugfx/gdisp/st7565/st7565.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * This file is subject to the terms of the GFX License. If a copy of
- * the license was not distributed with this file, you can obtain one at:
- *
- * http://ugfx.org/license.html
- */
-
-#ifndef _ST7565_H
-#define _ST7565_H
-
-#define ST7565_CONTRAST 0x81
-#define ST7565_ALLON_NORMAL 0xA4
-#define ST7565_ALLON 0xA5
-#define ST7565_POSITIVE_DISPLAY 0xA6
-#define ST7565_INVERT_DISPLAY 0xA7
-#define ST7565_DISPLAY_OFF 0xAE
-#define ST7565_DISPLAY_ON 0xAF
-
-#define ST7565_LCD_BIAS_7 0xA3
-#define ST7565_LCD_BIAS_9 0xA2
-
-#define ST7565_ADC_NORMAL 0xA0
-#define ST7565_ADC_REVERSE 0xA1
-
-#define ST7565_COM_SCAN_INC 0xC0
-#define ST7565_COM_SCAN_DEC 0xC8
-
-#define ST7565_START_LINE 0x40
-#define ST7565_PAGE 0xB0
-#define ST7565_COLUMN_MSB 0x10
-#define ST7565_COLUMN_LSB 0x00
-#define ST7565_RMW 0xE0
-
-#define ST7565_RESISTOR_RATIO 0x20
-#define ST7565_POWER_CONTROL 0x28
-
-#define ST7565_RESET 0xE2
-
-#endif /* _ST7565_H */
diff --git a/drivers/usb2422.c b/drivers/usb2422.c
new file mode 100644
index 00000000000..62b919093b9
--- /dev/null
+++ b/drivers/usb2422.c
@@ -0,0 +1,402 @@
+/* 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 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include
+#include "usb2422.h"
+#include "i2c_master.h"
+#include "wait.h"
+#include "gpio.h"
+
+/* -------- USB2422_VID : (USB2422L Offset: 0x00) (R/W 16) Vendor ID -------- */
+typedef union {
+ struct {
+ uint16_t VID_LSB : 8;
+ uint16_t VID_MSB : 8;
+ } bit; /*!< Structure used for bit access */
+ uint16_t reg; /*!< Type used for register access */
+} USB2422_VID_Type;
+
+/* -------- USB2422_PID : (USB2422L Offset: 0x02) (R/W 16) Product ID -------- */
+typedef union {
+ struct {
+ uint16_t PID_LSB : 8;
+ uint16_t PID_MSB : 8;
+ } bit; /*!< Structure used for bit access */
+ uint16_t reg; /*!< Type used for register access */
+} USB2422_PID_Type;
+
+/* -------- USB2422_DID : (USB2422L Offset: 0x04) (R/W 16) Device ID -------- */
+typedef union {
+ struct {
+ uint16_t DID_LSB : 8;
+ uint16_t DID_MSB : 8;
+ } bit; /*!< Structure used for bit access */
+ uint16_t reg; /*!< Type used for register access */
+} USB2422_DID_Type;
+
+/* -------- USB2422_CFG1 : (USB2422L Offset: 0x06) (R/W 8) Configuration Data Byte 1-------- */
+typedef union {
+ struct {
+ uint8_t PORT_PWR : 1;
+ uint8_t CURRENT_SNS : 2;
+ uint8_t EOP_DISABLE : 1;
+ uint8_t MTT_ENABLE : 1;
+ uint8_t HS_DISABLE : 1;
+ uint8_t : 1;
+ uint8_t SELF_BUS_PWR : 1;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_CFG1_Type;
+
+/* -------- USB2422_CFG2 : (USB2422L Offset: 0x07) (R/W 8) Configuration Data Byte 2-------- */
+typedef union {
+ struct {
+ uint8_t : 3;
+ uint8_t COMPOUND : 1;
+ uint8_t OC_TIMER : 2;
+ uint8_t : 1;
+ uint8_t DYNAMIC : 1;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_CFG2_Type;
+
+/* -------- USB2422_CFG3 : (USB2422L Offset: 0x08) (R/W 16) Configuration Data Byte 3-------- */
+typedef union {
+ struct {
+ uint8_t STRING_EN : 1;
+ uint8_t : 2;
+ uint8_t PRTMAP_EN : 1;
+ uint8_t : 4;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_CFG3_Type;
+
+/* -------- USB2422_NRD : (USB2422L Offset: 0x09) (R/W 8) Non Removable Device -------- */
+typedef union {
+ struct {
+ uint8_t : 5;
+ uint8_t PORT2_NR : 1;
+ uint8_t PORT1_NR : 1;
+ uint8_t : 1;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_NRD_Type;
+
+/* -------- USB2422_PDS : (USB2422L Offset: 0x0A) (R/W 8) Port Diable for Self-Powered Operation -------- */
+typedef union {
+ struct {
+ uint8_t : 1;
+ uint8_t PORT1_DIS : 1;
+ uint8_t PORT2_DIS : 1;
+ uint8_t : 5;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_PDS_Type;
+
+/* -------- USB2422_PDB : (USB2422L Offset: 0x0B) (R/W 8) Port Diable for Bus-Powered Operation -------- */
+
+typedef union {
+ struct {
+ uint8_t : 1;
+ uint8_t PORT1_DIS : 1;
+ uint8_t PORT2_DIS : 1;
+ uint8_t : 5;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_PDB_Type;
+
+/* -------- USB2422_MAXPS : (USB2422L Offset: 0x0C) (R/W 8) Max Power for Self-Powered Operation -------- */
+typedef union {
+ struct {
+ uint8_t MAX_PWR_SP : 8;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_MAXPS_Type;
+
+/* -------- USB2422_MAXPB : (USB2422L Offset: 0x0D) (R/W 8) Max Power for Bus-Powered Operation -------- */
+typedef union {
+ struct {
+ uint8_t MAX_PWR_BP : 8;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_MAXPB_Type;
+
+/* -------- USB2422_HCMCS : (USB2422L Offset: 0x0E) (R/W 8) Hub Controller Max Current for Self-Powered Operation -------- */
+typedef union {
+ struct {
+ uint8_t HC_MAX_C_SP : 8;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_HCMCS_Type;
+
+/* -------- USB2422_HCMCB : (USB2422L Offset: 0x0F) (R/W 8) Hub Controller Max Current for Bus-Powered Operation -------- */
+typedef union {
+ struct {
+ uint8_t HC_MAX_C_BP : 8;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_HCMCB_Type;
+
+/* -------- USB2422_PWRT : (USB2422L Offset: 0x10) (R/W 8) Power On Time -------- */
+typedef union {
+ struct {
+ uint8_t POWER_ON_TIME : 8;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_PWRT_Type;
+
+/* -------- USB2422_LANGID LSB : (USB2422L Offset: 0x11) (R/W 16) Language ID -------- */
+typedef union {
+ struct {
+ uint8_t LANGID_LSB : 8;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_LANGID_LSB_Type;
+
+/* -------- USB2422_LANGID MSB : (USB2422L Offset: 0x12) (R/W 16) Language ID -------- */
+typedef union {
+ struct {
+ uint8_t LANGID_MSB : 8;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_LANGID_MSB_Type;
+
+/* -------- USB2422_MFRSL : (USB2422L Offset: 0x13) (R/W 8) Manufacturer String Length -------- */
+typedef union {
+ struct {
+ uint8_t MFR_STR_LEN : 8;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_MFRSL_Type;
+
+/* -------- USB2422_PRDSL : (USB2422L Offset: 0x14) (R/W 8) Product String Length -------- */
+typedef union {
+ struct {
+ uint8_t PRD_STR_LEN : 8;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_PRDSL_Type;
+
+/* -------- USB2422_SERSL : (USB2422L Offset: 0x15) (R/W 8) Serial String Length -------- */
+typedef union {
+ struct {
+ uint8_t SER_STR_LEN : 8;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_SERSL_Type;
+
+/* -------- USB2422_MFRSTR : (USB2422L Offset: 0x16-53) (R/W 8) Maufacturer String -------- */
+typedef uint16_t USB2422_MFRSTR_Type;
+
+/* -------- USB2422_PRDSTR : (USB2422L Offset: 0x54-91) (R/W 8) Product String -------- */
+typedef uint16_t USB2422_PRDSTR_Type;
+
+/* -------- USB2422_SERSTR : (USB2422L Offset: 0x92-CF) (R/W 8) Serial String -------- */
+typedef uint16_t USB2422_SERSTR_Type;
+
+/* -------- USB2422_BCEN : (USB2422L Offset: 0xD0) (R/W 8) Battery Charging Enable -------- */
+
+typedef union {
+ struct {
+ uint8_t : 1;
+ uint8_t PORT1_BCE : 1;
+ uint8_t PORT2_BCE : 1;
+ uint8_t : 5;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_BCEN_Type;
+
+/* -------- USB2422_BOOSTUP : (USB2422L Offset: 0xF6) (R/W 8) Boost Upstream -------- */
+typedef union {
+ struct {
+ uint8_t BOOST : 2;
+ uint8_t : 6;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_BOOSTUP_Type;
+
+/* -------- USB2422_BOOSTDOWN : (USB2422L Offset: 0xF8) (R/W 8) Boost Downstream -------- */
+typedef union {
+ struct {
+ uint8_t BOOST1 : 2;
+ uint8_t BOOST2 : 2;
+ uint8_t : 4;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_BOOSTDOWN_Type;
+
+/* -------- USB2422_PRTSP : (USB2422L Offset: 0xFA) (R/W 8) Port Swap -------- */
+typedef union {
+ struct {
+ uint8_t : 1;
+ uint8_t PORT1_SP : 1;
+ uint8_t PORT2_SP : 1;
+ uint8_t : 5;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_PRTSP_Type;
+
+/* -------- USB2422_PRTR12 : (USB2422L Offset: 0xFB) (R/W 8) Port 1/2 Remap -------- */
+typedef union {
+ struct {
+ uint8_t PORT1_REMAP : 4;
+ uint8_t PORT2_REMAP : 4;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_PRTR12_Type;
+
+#define USB2422_PRTR12_DISABLE 0
+#define USB2422_PRT12_P2TOL1 1
+#define USB2422_PRT12_P2XTOL2 2
+#define USB2422_PRT12_P1TOL1 1
+#define USB2422_PRT12_P1XTOL2 2
+
+/* -------- USB2422_STCD : (USB2422L Offset: 0xFF) (R/W 8) Status Command -------- */
+typedef union {
+ struct {
+ uint8_t USB_ATTACH : 1;
+ uint8_t RESET : 1;
+ uint8_t INTF_PWRDN : 1;
+ uint8_t : 5;
+ } bit; /*!< Structure used for bit access */
+ uint8_t reg; /*!< Type used for register access */
+} USB2422_STCD_Type;
+
+/** \brief USB2422 device hardware registers */
+typedef struct {
+ USB2422_VID_Type VID; /**< \brief Offset: 0x00*/
+ USB2422_PID_Type PID; /**< \brief Offset: 0x02*/
+ USB2422_DID_Type DID; /**< \brief Offset: 0x04*/
+ USB2422_CFG1_Type CFG1; /**< \brief Offset: 0x06*/
+ USB2422_CFG2_Type CFG2; /**< \brief Offset: 0x07*/
+ USB2422_CFG3_Type CFG3; /**< \brief Offset: 0x08*/
+ USB2422_NRD_Type NRD; /**< \brief Offset: 0x09*/
+ USB2422_PDS_Type PDS; /**< \brief Offset: 0x0A*/
+ USB2422_PDB_Type PDB; /**< \brief Offset: 0x0B*/
+ USB2422_MAXPS_Type MAXPS; /**< \brief Offset: 0x0C*/
+ USB2422_MAXPB_Type MAXPB; /**< \brief Offset: 0x0D*/
+ USB2422_HCMCS_Type HCMCS; /**< \brief Offset: 0x0E*/
+ USB2422_HCMCB_Type HCMCB; /**< \brief Offset: 0x0F*/
+ USB2422_PWRT_Type PWRT; /**< \brief Offset: 0x10*/
+ USB2422_LANGID_LSB_Type LANGID_LSB; /**< \brief Offset: 0x11*/
+ USB2422_LANGID_MSB_Type LANGID_MSB; /**< \brief Offset: 0x12*/
+ USB2422_MFRSL_Type MFRSL; /**< \brief Offset: 0x13*/
+ USB2422_PRDSL_Type PRDSL; /**< \brief Offset: 0x14*/
+ USB2422_SERSL_Type SERSL; /**< \brief Offset: 0x15*/
+ USB2422_MFRSTR_Type MFRSTR[31]; /**< \brief Offset: 0x16*/
+ USB2422_PRDSTR_Type PRDSTR[31]; /**< \brief Offset: 0x54*/
+ USB2422_SERSTR_Type SERSTR[31]; /**< \brief Offset: 0x92*/
+ USB2422_BCEN_Type BCEN; /**< \brief Offset: 0xD0*/
+ uint8_t Reserved1[0x25];
+ USB2422_BOOSTUP_Type BOOSTUP; /**< \brief Offset: 0xF6*/
+ uint8_t Reserved2[0x1];
+ USB2422_BOOSTDOWN_Type BOOSTDOWN; /**< \brief Offset: 0xF8*/
+ uint8_t Reserved3[0x1];
+ USB2422_PRTSP_Type PRTSP; /**< \brief Offset: 0xFA*/
+ USB2422_PRTR12_Type PRTR12; /**< \brief Offset: 0xFB*/
+ uint8_t Reserved4[0x3];
+ USB2422_STCD_Type STCD; /**< \brief Offset: 0xFF*/
+} Usb2422_t;
+
+// ***************************************************************
+
+static Usb2422_t config;
+
+// ***************************************************************
+
+/** \brief Handle the conversion to allow simple strings
+ */
+static void USB2422_strcpy(const char* str, USB2422_MFRSTR_Type* dest, uint8_t len) {
+ for (uint8_t i = 0; i < len; i++) {
+ dest[i] = str[i];
+ }
+}
+
+/** \brief Handle the conversion to allow simple strings
+ */
+static void USB2422_write_block(void) {
+ static unsigned char i2c0_buf[34];
+
+ unsigned char* dest = i2c0_buf;
+ unsigned char* src;
+ unsigned char* base = (unsigned char*)&config;
+
+ for (src = base; src < base + 256; src += 32) {
+ dest[0] = src - base;
+ dest[1] = 32;
+ memcpy(&dest[2], src, 32);
+ i2c_transmit(USB2422_ADDRESS, dest, 34, 50000);
+ wait_us(100);
+ }
+}
+
+// ***************************************************************
+
+void USB2422_init() {
+#ifdef USB2422_RESET_PIN
+ setPinOutput(USB2422_RESET_PIN);
+#endif
+#ifdef USB2422_ACTIVE_PIN
+ setPinInput(USB2422_ACTIVE_PIN);
+#endif
+
+ i2c_init(); // IC2 clk must be high at USB2422 reset release time to signal SMB configuration
+}
+
+void USB2422_configure() {
+ static const char SERNAME[] = "Unavailable";
+
+ memset(&config, 0, sizeof(Usb2422_t));
+
+ // configure Usb2422 registers
+ config.VID.reg = USB2422_VENDOR_ID;
+ config.PID.reg = USB2422_PRODUCT_ID;
+ config.DID.reg = USB2422_DEVICE_VER; // BCD format, eg 01.01
+ config.CFG1.bit.SELF_BUS_PWR = 1; // self powered for now
+ config.CFG1.bit.HS_DISABLE = 1; // full or high speed
+ // config.CFG2.bit.COMPOUND = 0; // compound device
+ config.CFG3.bit.STRING_EN = 1; // strings enabled
+ // config.NRD.bit.PORT2_NR = 0; // MCU is non-removable
+ config.MAXPB.reg = 20; // 0mA
+ config.HCMCB.reg = 20; // 0mA
+ config.MFRSL.reg = sizeof(USB2422_MANUFACTURER);
+ config.PRDSL.reg = sizeof(USB2422_PRODUCT);
+ config.SERSL.reg = sizeof(SERNAME);
+ USB2422_strcpy(USB2422_MANUFACTURER, config.MFRSTR, sizeof(USB2422_MANUFACTURER));
+ USB2422_strcpy(USB2422_PRODUCT, config.PRDSTR, sizeof(USB2422_PRODUCT));
+ USB2422_strcpy(SERNAME, config.SERSTR, sizeof(SERNAME));
+ // config.BOOSTUP.bit.BOOST=3; //upstream port
+ // config.BOOSTDOWN.bit.BOOST1=0; // extra port
+ // config.BOOSTDOWN.bit.BOOST2=2; //MCU is close
+ config.STCD.bit.USB_ATTACH = 1;
+
+ USB2422_write_block();
+}
+
+void USB2422_reset() {
+#ifdef USB2422_RESET_PIN
+ writePinLow(USB2422_RESET_PIN);
+ wait_us(2);
+ writePinHigh(USB2422_RESET_PIN);
+#endif
+}
+
+bool USB2422_active() {
+#ifdef USB2422_ACTIVE_PIN
+ return readPin(USB2422_ACTIVE_PIN);
+#else
+ return 1;
+#endif
+}
diff --git a/drivers/usb2422.h b/drivers/usb2422.h
new file mode 100644
index 00000000000..2e435b02bc9
--- /dev/null
+++ b/drivers/usb2422.h
@@ -0,0 +1,59 @@
+/* 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 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#pragma once
+
+#include
+
+#ifndef USB2422_ADDRESS
+# define USB2422_ADDRESS 0x58
+#endif
+
+#ifndef USB2422_VENDOR_ID
+# define USB2422_VENDOR_ID 0xFEED
+#endif
+#ifndef USB2422_PRODUCT_ID
+# define USB2422_PRODUCT_ID 0x0001
+#endif
+#ifndef USB2422_DEVICE_VER
+# define USB2422_DEVICE_VER 0x0001
+#endif
+
+#ifndef USB2422_MANUFACTURER
+# define USB2422_MANUFACTURER "QMK"
+#endif
+#ifndef USB2422_PRODUCT
+# define USB2422_PRODUCT "QMK Hub"
+#endif
+
+/** \brief Initialises the dependent subsystems */
+void USB2422_init(void);
+
+/** \brief Push configuration to the USB2422 device */
+void USB2422_configure(void);
+
+/** \brief Reset the chip (RESET_N)
+ *
+ * NOTE:
+ * Depends on a valid USB2422_RESET_PIN configuration
+ */
+void USB2422_reset(void);
+
+/** \brief Indicates the USB state of the hub (SUSP_IND)
+ *
+ * NOTE:
+ * Depends on a valid USB2422_ACTIVE_PIN configuration
+ */
+bool USB2422_active(void);
diff --git a/drivers/ws2812.h b/drivers/ws2812.h
index f179fcb0ef5..945b3d07289 100644
--- a/drivers/ws2812.h
+++ b/drivers/ws2812.h
@@ -17,11 +17,41 @@
#include "quantum/color.h"
+/*
+ * The WS2812 datasheets define T1H 900ns, T0H 350ns, T1L 350ns, T0L 900ns. Hence, by default, these
+ * are chosen to be conservative and avoid problems rather than for maximum throughput; in the code,
+ * this is done by default using a WS2812_TIMING parameter that accounts for the whole window (1250ns)
+ * and defining T1H and T0H; T1L and T0L are obtained by subtracting their low counterparts from the window.
+ *
+ * However, there are certain "WS2812"-like LEDs, like the SK6812s, which work in a similar
+ * communication topology but use different timings for the window and the T1L, T1H, T0L and T0H.
+ * This means that, albeit the same driver being applicable, the timings must be adapted.
+ */
+
+#ifndef WS2812_TIMING
+# define WS2812_TIMING 1250
+#endif
+
+#ifndef WS2812_T1H
+# define WS2812_T1H 900 // Width of a 1 bit in ns
+#endif
+
+#ifndef WS2812_T1L
+# define WS2812_T1L (WS2812_TIMING - WS2812_T1H) // Width of a 1 bit in ns
+#endif
+
+#ifndef WS2812_T0H
+# define WS2812_T0H 350 // Width of a 0 bit in ns
+#endif
+
+#ifndef WS2812_T0L
+# define WS2812_T0L (WS2812_TIMING - WS2812_T0H) // Width of a 0 bit in ns
+#endif
+
/*
* Older WS2812s can handle a reset time (TRST) of 50us, but recent
* component revisions require a minimum of 280us.
*/
-
#if !defined(WS2812_TRST_US)
# define WS2812_TRST_US 280
#endif
diff --git a/keyboards/0xcb/1337/keymaps/conor/keymap.c b/keyboards/0xcb/1337/keymaps/conor/keymap.c
index 63c3ea9f58f..615ca7baf8d 100644
--- a/keyboards/0xcb/1337/keymaps/conor/keymap.c
+++ b/keyboards/0xcb/1337/keymaps/conor/keymap.c
@@ -168,7 +168,7 @@ static void render_rgbled_status(bool) {
oled_write_ln_P(PSTR("\n"), false);
}
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
static bool finished_timer = false;
if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) {
render_logo();
@@ -181,5 +181,6 @@ void oled_task_user(void) {
render_rgbled_status(true);
render_logo_font();
}
+ return false;
}
#endif
diff --git a/keyboards/0xcb/1337/keymaps/default/keymap.c b/keyboards/0xcb/1337/keymaps/default/keymap.c
index b79ecb767e3..751af6f4f7d 100644
--- a/keyboards/0xcb/1337/keymaps/default/keymap.c
+++ b/keyboards/0xcb/1337/keymaps/default/keymap.c
@@ -159,7 +159,7 @@ static void render_rgbled_status(void) {
oled_write_ln_P(PSTR("\n"), false);
}
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
static bool finished_timer = false;
if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) {
render_logo();
@@ -172,5 +172,6 @@ void oled_task_user(void) {
render_rgbled_status();
render_logo_font();
}
+ return false;
}
#endif
diff --git a/keyboards/0xcb/1337/keymaps/jakob/keymap.c b/keyboards/0xcb/1337/keymaps/jakob/keymap.c
index 190fee21c6d..f4a075844fc 100644
--- a/keyboards/0xcb/1337/keymaps/jakob/keymap.c
+++ b/keyboards/0xcb/1337/keymaps/jakob/keymap.c
@@ -168,7 +168,7 @@ static void render_rgbled_status(bool) {
oled_write_ln_P(PSTR("\n"), false);
}
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
static bool finished_timer = false;
if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) {
render_logo();
@@ -181,5 +181,6 @@ void oled_task_user(void) {
render_rgbled_status(true);
render_logo_font();
}
+ return false;
}
#endif
diff --git a/keyboards/0xcb/1337/keymaps/via/keymap.c b/keyboards/0xcb/1337/keymaps/via/keymap.c
index eefa67ddb60..a85670e06e4 100644
--- a/keyboards/0xcb/1337/keymaps/via/keymap.c
+++ b/keyboards/0xcb/1337/keymaps/via/keymap.c
@@ -168,7 +168,7 @@ static void render_rgbled_status(void) {
oled_write_ln_P(PSTR("\n"), false);
}
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
static bool finished_timer = false;
if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) {
render_logo();
@@ -181,5 +181,6 @@ void oled_task_user(void) {
render_rgbled_status();
render_logo_font();
}
+ return false;
}
#endif
diff --git a/keyboards/0xcb/1337/rules.mk b/keyboards/0xcb/1337/rules.mk
index ec5e339560c..76a0c6d5992 100644
--- a/keyboards/0xcb/1337/rules.mk
+++ b/keyboards/0xcb/1337/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/0xcb/static/config.h b/keyboards/0xcb/static/config.h
index 0d36b931eeb..c30450b460d 100644
--- a/keyboards/0xcb/static/config.h
+++ b/keyboards/0xcb/static/config.h
@@ -48,7 +48,6 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
#define TAP_CODE_DELAY 10
-#define ENCODER_DIRECTION_FLIP
#define ENCODER_RESOLUTION 4
#define ENCODERS_PAD_A { D0 }
#define ENCODERS_PAD_B { D1 }
diff --git a/keyboards/0xcb/static/keymaps/bongocat/keymap.c b/keyboards/0xcb/static/keymaps/bongocat/keymap.c
index d7f6db08cc9..12cc75217eb 100644
--- a/keyboards/0xcb/static/keymaps/bongocat/keymap.c
+++ b/keyboards/0xcb/static/keymaps/bongocat/keymap.c
@@ -107,7 +107,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
#endif
/* oled stuff :) */
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
#define IDLE_FRAMES 5
#define IDLE_SPEED 20 // below this wpm value your animation will idle
#define TAP_FRAMES 2
@@ -262,7 +262,7 @@ static void render_cat(void) {
}
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
static bool finished_timer = false;
if (!finished_timer && (timer_elapsed(startup_timer) < 3000)) {
render_logo();
@@ -286,6 +286,7 @@ void oled_task_user(void) {
render_layer();
}
}
+ return false;
}
#endif
diff --git a/keyboards/0xcb/static/keymaps/default/keymap.c b/keyboards/0xcb/static/keymaps/default/keymap.c
index 139c257e66f..4d0d14ff7ec 100644
--- a/keyboards/0xcb/static/keymaps/default/keymap.c
+++ b/keyboards/0xcb/static/keymaps/default/keymap.c
@@ -175,7 +175,7 @@ static void render_layer(void) {
oled_write_P(logo[3][2], false);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
static bool finished_timer = false;
if (!finished_timer && (timer_elapsed(startup_timer) < 3000)) {
render_logo();
@@ -186,5 +186,6 @@ void oled_task_user(void) {
}
render_layer();
}
+ return false;
}
#endif
diff --git a/keyboards/0xcb/static/keymaps/via/keymap.c b/keyboards/0xcb/static/keymaps/via/keymap.c
index 6bb24c1fad0..62fcca1f3c3 100644
--- a/keyboards/0xcb/static/keymaps/via/keymap.c
+++ b/keyboards/0xcb/static/keymaps/via/keymap.c
@@ -175,7 +175,7 @@ static void render_layer(void) {
oled_write_P(logo[3][2], false);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
static bool finished_timer = false;
if (!finished_timer && (timer_elapsed(startup_timer) < 3000)) {
render_logo();
@@ -186,6 +186,7 @@ void oled_task_user(void) {
}
render_layer();
}
+ return false;
}
#endif
diff --git a/keyboards/0xcb/static/readme.md b/keyboards/0xcb/static/readme.md
index 8403b4450ec..57e87b71a6d 100644
--- a/keyboards/0xcb/static/readme.md
+++ b/keyboards/0xcb/static/readme.md
@@ -4,7 +4,7 @@ Macro keypad
* Keyboard Maintainer: [Conor Burns](https://github.com/conor-burns)
* Hardware Supported: https://github.com/0xCB-dev/0xcb-static
-* Hardware Availability: Soon on tindie or order your own parts - the hardware in the repo is Open Source :D
+* Hardware Availability: On CandyKeys or order your own parts - the hardware in the repo is Open Source :D
* PCB renders :)
![](https://github.com/0xCB-dev/0xcb-static/blob/main/PCB/rev1.0/top.png)
diff --git a/keyboards/0xcb/static/rules.mk b/keyboards/0xcb/static/rules.mk
index 3738d80295c..c32b3252c9c 100644
--- a/keyboards/0xcb/static/rules.mk
+++ b/keyboards/0xcb/static/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = usbasploader
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/10bleoledhub/keymaps/default/keymap.c b/keyboards/10bleoledhub/keymaps/default/keymap.c
index 84c1f106801..806d9131283 100644
--- a/keyboards/10bleoledhub/keymaps/default/keymap.c
+++ b/keyboards/10bleoledhub/keymaps/default/keymap.c
@@ -55,7 +55,10 @@ static void render_logo(void) {
}
#ifdef OLED_ENABLE
-void oled_task_user(void) { render_logo(); }
+bool oled_task_user(void) {
+ render_logo();
+ return false;
+}
#endif
bool encoder_update_user(uint8_t index, bool clockwise) {
diff --git a/keyboards/10bleoledhub/keymaps/via/keymap.c b/keyboards/10bleoledhub/keymaps/via/keymap.c
index df7130e80b9..316819acf57 100644
--- a/keyboards/10bleoledhub/keymaps/via/keymap.c
+++ b/keyboards/10bleoledhub/keymaps/via/keymap.c
@@ -55,7 +55,10 @@ static void render_logo(void) {
}
#ifdef OLED_ENABLE
-void oled_task_user(void) { render_logo(); }
+bool oled_task_user(void) {
+ render_logo();
+ return false;
+}
#endif
bool encoder_update_user(uint8_t index, bool clockwise) {
diff --git a/keyboards/10bleoledhub/rules.mk b/keyboards/10bleoledhub/rules.mk
index 1e036e660c8..5f2e79f5a39 100644
--- a/keyboards/10bleoledhub/rules.mk
+++ b/keyboards/10bleoledhub/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
@@ -21,9 +21,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes
diff --git a/keyboards/1upkeyboards/1up60hse/rules.mk b/keyboards/1upkeyboards/1up60hse/rules.mk
index 259fea0256c..0f8c15bc026 100644
--- a/keyboards/1upkeyboards/1up60hse/rules.mk
+++ b/keyboards/1upkeyboards/1up60hse/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/1upkeyboards/1up60hte/rules.mk b/keyboards/1upkeyboards/1up60hte/rules.mk
index 5c2a8b20c58..ccd93ce6d4f 100644
--- a/keyboards/1upkeyboards/1up60hte/rules.mk
+++ b/keyboards/1upkeyboards/1up60hte/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/1upkeyboards/1up60rgb/rules.mk b/keyboards/1upkeyboards/1up60rgb/rules.mk
index 7949142a1db..609f8ee162e 100644
--- a/keyboards/1upkeyboards/1up60rgb/rules.mk
+++ b/keyboards/1upkeyboards/1up60rgb/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/1upkeyboards/super16/config.h b/keyboards/1upkeyboards/super16/config.h
index 2e9312e6395..c0c0a7891b7 100644
--- a/keyboards/1upkeyboards/super16/config.h
+++ b/keyboards/1upkeyboards/super16/config.h
@@ -83,6 +83,54 @@ along with this program. If not, see .
# elif defined RGB_MATRIX_ENABLE
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS // reacts to keyreleases (instead of keypresses)
+// 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
#endif
diff --git a/keyboards/1upkeyboards/super16/rules.mk b/keyboards/1upkeyboards/super16/rules.mk
index d19e1ac8f4f..f4614278426 100644
--- a/keyboards/1upkeyboards/super16/rules.mk
+++ b/keyboards/1upkeyboards/super16/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/2key2crawl/rules.mk b/keyboards/2key2crawl/rules.mk
index 19a463a5af9..fa92216a38f 100644
--- a/keyboards/2key2crawl/rules.mk
+++ b/keyboards/2key2crawl/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/3keyecosystem/2key2/config.h b/keyboards/3keyecosystem/2key2/config.h
index 958a665edc7..16cbd00a429 100644
--- a/keyboards/3keyecosystem/2key2/config.h
+++ b/keyboards/3keyecosystem/2key2/config.h
@@ -49,7 +49,52 @@ along with this program. If not, see .
#define RGB_MATRIX_STARTUP_SPD 20
#define RGB_MATRIX_STARTUP_VAL 128
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED true
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+#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_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+#define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/3keyecosystem/2key2/rules.mk b/keyboards/3keyecosystem/2key2/rules.mk
index 872ace3b35e..0b933eb262b 100644
--- a/keyboards/3keyecosystem/2key2/rules.mk
+++ b/keyboards/3keyecosystem/2key2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/3w6/keymaps/helltm/keymap.c b/keyboards/3w6/keymaps/helltm/keymap.c
new file mode 100644
index 00000000000..507085081fd
--- /dev/null
+++ b/keyboards/3w6/keymaps/helltm/keymap.c
@@ -0,0 +1,160 @@
+/* Copyright 2021 HellSingCoder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers
+{
+ _ALPHA_QWERTY = 0,
+ _SYM,
+ _NAV,
+ _NUM,
+};
+
+enum custom_keycodes {
+ KC_THUMB_SWAP,
+};
+
+/* Space Enter swap */
+bool swap_space_enter = false;
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /*
+ * QWERTY
+ * _____ _____
+ * .-----| E |-----._____ _____.-----| I |-----.
+ * .-----| W |_____| R | T | | Y | U |_____| O |-----.
+ * | Q |-----| D |-----|_____| |_____|-----| K |-----| P |
+ * |-----| S |_____| F | G | | H | J |_____| L |-----|
+ * | A |-----| C |-----|_____| |_____|-----| , < |-----| ; : |
+ * |-----| X |_____| V | B | | N | M |_____| . > |-----|
+ * | Z |-----' '-----|_____| |_____|-----' '-----| / ? |
+ * '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----'
+ * SHIFT | WIN ||CTRL | / / \ \ | BSp || Del | SHIFT
+ * '-----':_____|/ ENT / \ SPC \|_____:'-----'
+ * NUM '--.._/ \_..--' NAV SYM
+ */
+ [_ALPHA_QWERTY] = 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 ,
+ LSFT_T(KC_Z), KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , RSFT_T(KC_SLSH),
+ LT(_NUM, KC_LGUI), KC_LCTRL, KC_ENT, KC_SPC, LT(_NAV, KC_BSPC), LT(_SYM, KC_DEL)
+ ),
+
+ /*
+ * Symbols
+ * _____ _____
+ * .-----| # |-----._____ _____.-----| * |-----.
+ * .-----| @ |_____| $ | % | | ^ | & |_____| ( |-----.
+ * | ! |-----| |-----|_____| |_____|-----| [ { |-----| ) |
+ * |-----| |_____| | | | { | } |_____| ] } |-----|
+ * | ` ~ |-----| |-----|_____| |_____|-----| |-----| ' " |
+ * |-----| |_____| | | | - _ | = + |_____| | |-----|
+ * | ~ |-----' '-----|_____| |_____|-----' '-----| \ | |
+ * '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----'
+ * SHIFT | ||CTRL | / / \ \ | BSp || | SHIFT
+ * '-----':_____|/ ENT / \ SPC \|_____:'-----'
+ * '--.._/ \_..--'
+ */
+ [_SYM] = LAYOUT(
+ KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN ,
+ KC_GRV , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_QUOT ,
+ LSFT_T(KC_TILD), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL , XXXXXXX, KC_PIPE, RSFT_T(KC_BSLS),
+ XXXXXXX, _______, _______, _______, KC_BSPC, XXXXXXX
+ ),
+
+ /*
+ * Navigation
+ * _____ _____
+ * .-----|Mute |-----._____ _____.-----| Up |-----.
+ * .-----|VDown|_____| VUp | | | |PDown|_____| PUp |-----.
+ * | Esc |-----|Play |-----|_____| |_____|-----|Down |-----| BSp |
+ * |-----|Prev |_____|Next | | |Home |Left |_____|Right|-----|
+ * | Tab |-----|Stop |-----|_____| |_____|-----| |-----| ' " |
+ * |-----| |_____| |Swap | | | |_____| End |-----|
+ * | CPS |-----' '-----|_____| |_____|-----' '-----| Del |
+ * '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----'
+ * SHIFT | ||CTRL | / / \ \ | BSp || | SHIFT
+ * '-----':_____|/ ENT / \ SPC \|_____:'-----'
+ * '--.._/ \_..--'
+ */
+ [_NAV] = LAYOUT(
+ KC_ESC , KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX , XXXXXXX, KC_PGDN, KC_UP , KC_PGUP, KC_BSPC,
+ KC_TAB , KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX , KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUOT,
+ LSFT_T(KC_CAPS), XXXXXXX, KC_MSTP, XXXXXXX, KC_THUMB_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, KC_END , RSFT_T(KC_DEL) ,
+ XXXXXXX, _______, _______, _______, KC_BSPC, XXXXXXX
+ ),
+
+ /*
+ * Numbers
+ * _____ _____
+ * .-----| 3 |-----._____ _____.-----| 8 |-----.
+ * .-----| 2 |_____| 4 | 5 | | 6 | 7 |_____| 9 |-----.
+ * | 1 |-----| F3 |-----|_____| |_____|-----| F8 |-----| 0 |
+ * |-----| F2 |_____| F4 | F5 | | F6 | F7 |_____| F9 |-----|
+ * | F1 |-----| Scr |-----|_____| |_____|-----| |-----| F10 |
+ * |-----| TMg |_____| | | | | |_____| F11 |-----|
+ * |Shift|-----' '-----|_____| |_____|-----' '-----| F12 |
+ * '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----'
+ * | ||CTRL | / / \ \ | BSp || | SHIFT
+ * '-----':_____|/ ENT / \ SPC \|_____:'-----'
+ * '--.._/ \_..--'
+ */
+ [_NUM] = LAYOUT(
+ KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,
+ KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 ,
+ KC_LSFT, LCA(KC_DEL), SWIN(KC_S), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11 , RSFT_T(KC_F12) ,
+ XXXXXXX, _______, _______, _______, KC_BSPC, XXXXXXX
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+
+ /* Space Enter swap */
+ case KC_THUMB_SWAP:
+ if (record->event.pressed) {
+ unregister_code(KC_SPC);
+ unregister_code(KC_ENT);
+ swap_space_enter = !swap_space_enter;
+ }
+ return false;
+ break;
+
+ case KC_ENT:
+ if (swap_space_enter) {
+ if (record->event.pressed) {
+ register_code(KC_SPC);
+ } else {
+ unregister_code(KC_SPC);
+ }
+ return false;
+ }
+ break;
+ case KC_SPC:
+ if (swap_space_enter) {
+ if (record->event.pressed) {
+ register_code(KC_ENT);
+ } else {
+ unregister_code(KC_ENT);
+ }
+ return false;
+ }
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/3w6/rev1/rules.mk b/keyboards/3w6/rev1/rules.mk
index 6cc80999c16..e44b34cb925 100644
--- a/keyboards/3w6/rev1/rules.mk
+++ b/keyboards/3w6/rev1/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+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
diff --git a/keyboards/3w6/rev2/rules.mk b/keyboards/3w6/rev2/rules.mk
index 6cc80999c16..e44b34cb925 100644
--- a/keyboards/3w6/rev2/rules.mk
+++ b/keyboards/3w6/rev2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+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
diff --git a/keyboards/40percentclub/25/rules.mk b/keyboards/40percentclub/25/rules.mk
index ff835097a1e..48e3d766c42 100644
--- a/keyboards/40percentclub/25/rules.mk
+++ b/keyboards/40percentclub/25/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/40percentclub/6lit/rules.mk b/keyboards/40percentclub/6lit/rules.mk
index 95462905388..a15b02004fb 100644
--- a/keyboards/40percentclub/6lit/rules.mk
+++ b/keyboards/40percentclub/6lit/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/40percentclub/foobar/rules.mk b/keyboards/40percentclub/foobar/rules.mk
index c21b5c0bbd1..2b23dc2ec3a 100644
--- a/keyboards/40percentclub/foobar/rules.mk
+++ b/keyboards/40percentclub/foobar/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/40percentclub/gherkin/keymaps/stevexyz/rules.mk b/keyboards/40percentclub/gherkin/keymaps/stevexyz/rules.mk
index 3b0966b94a8..b693b8e3059 100644
--- a/keyboards/40percentclub/gherkin/keymaps/stevexyz/rules.mk
+++ b/keyboards/40percentclub/gherkin/keymaps/stevexyz/rules.mk
@@ -1,6 +1,6 @@
# Build Options (yes/no)
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/40percentclub/gherkin/rules.mk b/keyboards/40percentclub/gherkin/rules.mk
index 5db3f2eedb4..cb5b8b96f9d 100644
--- a/keyboards/40percentclub/gherkin/rules.mk
+++ b/keyboards/40percentclub/gherkin/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/40percentclub/i75/rules.mk b/keyboards/40percentclub/i75/rules.mk
index 719351cec63..1d0cfaf6df8 100644
--- a/keyboards/40percentclub/i75/rules.mk
+++ b/keyboards/40percentclub/i75/rules.mk
@@ -1,7 +1,7 @@
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/40percentclub/luddite/rules.mk b/keyboards/40percentclub/luddite/rules.mk
index e623904b20c..2ccac34f7a3 100644
--- a/keyboards/40percentclub/luddite/rules.mk
+++ b/keyboards/40percentclub/luddite/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/40percentclub/mf68/keymaps/andyjack/rules.mk b/keyboards/40percentclub/mf68/keymaps/andyjack/rules.mk
index 1a247b0543d..a124bde758d 100644
--- a/keyboards/40percentclub/mf68/keymaps/andyjack/rules.mk
+++ b/keyboards/40percentclub/mf68/keymaps/andyjack/rules.mk
@@ -1,2 +1,2 @@
MOUSEKEY_ENABLE = yes
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
diff --git a/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk b/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk
index 2a4ff658cf2..160b3684b3c 100644
--- a/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk
+++ b/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk
@@ -4,5 +4,6 @@ F_CPU = 8000000
# Build Options
# change yes to no to disable
#
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
BACKLIGHT_ENABLE = no
diff --git a/keyboards/40percentclub/mf68/rules.mk b/keyboards/40percentclub/mf68/rules.mk
index 5069e083b5a..31bab319873 100644
--- a/keyboards/40percentclub/mf68/rules.mk
+++ b/keyboards/40percentclub/mf68/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/40percentclub/nano/keymaps/drashna/config.h b/keyboards/40percentclub/nano/keymaps/drashna/config.h
new file mode 100644
index 00000000000..411ee8a81bb
--- /dev/null
+++ b/keyboards/40percentclub/nano/keymaps/drashna/config.h
@@ -0,0 +1,22 @@
+/* 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
+
+#define ANALOG_JOYSTICK_X_AXIS_PIN B4
+#define ANALOG_JOYSTICK_Y_AXIS_PIN B5
+
+#define ANALOG_JOYSTICK_CLICK_PIN E6
diff --git a/keyboards/40percentclub/nano/keymaps/drashna/keymap.c b/keyboards/40percentclub/nano/keymaps/drashna/keymap.c
index 13f89dd53d7..cc5991d7a26 100644
--- a/keyboards/40percentclub/nano/keymaps/drashna/keymap.c
+++ b/keyboards/40percentclub/nano/keymaps/drashna/keymap.c
@@ -29,98 +29,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
// clang-format on
-
-// Joystick
-// Set Pins
-// uint8_t xPin = 8; // VRx / /B4
-// uint8_t yPin = 7; // VRy // B5
-uint8_t swPin = E6; // SW
-
-// Set Parameters
-uint16_t minAxisValue = 0;
-uint16_t maxAxisValue = 1023;
-
-uint8_t maxCursorSpeed = 2;
-uint8_t precisionSpeed = 1;
-uint8_t speedRegulator = 20; // Lower Values Create Faster Movement
-
-int8_t xPolarity = 1;
-int8_t yPolarity = 1;
-
-uint8_t cursorTimeout = 10;
-
-int16_t xOrigin, yOrigin;
-
-uint16_t lastCursor = 0;
-
-int16_t axisCoordinate(uint8_t pin, uint16_t origin) {
- int8_t direction;
- int16_t distanceFromOrigin;
- int16_t range;
-
- int16_t position = analogReadPin(pin);
-
- if (origin == position) {
- return 0;
- } else if (origin > position) {
- distanceFromOrigin = origin - position;
- range = origin - minAxisValue;
- direction = -1;
- } else {
- distanceFromOrigin = position - origin;
- range = maxAxisValue - origin;
- direction = 1;
- }
-
- float percent = (float)distanceFromOrigin / range;
- int16_t coordinate = (int16_t)(percent * 100);
- if (coordinate < 0) {
- return 0;
- } else if (coordinate > 100) {
- return 100 * direction;
- } else {
- return coordinate * direction;
- }
-}
-
-int8_t axisToMouseComponent(uint8_t pin, int16_t origin, uint8_t maxSpeed, int8_t polarity) {
- int coordinate = axisCoordinate(pin, origin);
- if (coordinate != 0) {
- float percent = (float)coordinate / 100;
- if (get_mods() & MOD_BIT(KC_LSFT)) {
- return percent * precisionSpeed * polarity * (abs(coordinate) / speedRegulator);
- } else {
- return percent * maxCursorSpeed * polarity * (abs(coordinate) / speedRegulator);
- }
- } else {
- return 0;
- }
-}
-
-void pointing_device_task(void) {
- report_mouse_t report = pointing_device_get_report();
-
- // todo read as one vector
- if (timer_elapsed(lastCursor) > cursorTimeout) {
- lastCursor = timer_read();
- report.x = axisToMouseComponent(B4, xOrigin, maxCursorSpeed, xPolarity);
- report.y = axisToMouseComponent(B5, yOrigin, maxCursorSpeed, yPolarity);
- }
- //
- if (!readPin(E6)) {
- report.buttons |= MOUSE_BTN1;
- } else {
- report.buttons &= ~MOUSE_BTN1;
- }
-
- pointing_device_set_report(report);
- pointing_device_send();
-}
-
-void matrix_init_keymap(void) {
- // init pin? Is needed?
- setPinInputHigh(E6);
- // Account for drift
- xOrigin = analogReadPin(B4);
- yOrigin = analogReadPin(B5);
-}
diff --git a/keyboards/40percentclub/nano/keymaps/drashna/rules.mk b/keyboards/40percentclub/nano/keymaps/drashna/rules.mk
index 2b72a112b0d..aa7966a8b58 100644
--- a/keyboards/40percentclub/nano/keymaps/drashna/rules.mk
+++ b/keyboards/40percentclub/nano/keymaps/drashna/rules.mk
@@ -1,7 +1,6 @@
-POINTING_DEVICE_ENABLE = yes
-RGBLIGHT_ENABLE = no
-CONSOLE_ENABLE = no
+POINTING_DEVICE_ENABLE = yes
+POINTING_DEVICE_DRIVER = analog_joystick
+RGBLIGHT_ENABLE = no
+CONSOLE_ENABLE = no
-BOOTLOADER = qmk-dfu
-
-SRC += analog.c
+BOOTLOADER = qmk-dfu
diff --git a/keyboards/40percentclub/nein/rules.mk b/keyboards/40percentclub/nein/rules.mk
index 4411195da2a..9578124554c 100644
--- a/keyboards/40percentclub/nein/rules.mk
+++ b/keyboards/40percentclub/nein/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/40percentclub/nori/rules.mk b/keyboards/40percentclub/nori/rules.mk
index 181823d0a87..1e76a7eed3a 100644
--- a/keyboards/40percentclub/nori/rules.mk
+++ b/keyboards/40percentclub/nori/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/40percentclub/polyandry/config.h b/keyboards/40percentclub/polyandry/config.h
new file mode 100644
index 00000000000..4d64e2d209c
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/config.h
@@ -0,0 +1,90 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER di0ib
+#define PRODUCT Polypad
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+//more detailed config options start below:
+
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/40percentclub/polyandry/info.json b/keyboards/40percentclub/polyandry/info.json
new file mode 100644
index 00000000000..d0d1a00f86c
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/info.json
@@ -0,0 +1,27 @@
+{
+ "keyboard_name": "Polyandry",
+ "url": "",
+ "maintainer": "QMK",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label": "k000", "x": 0, "y": 0},
+ {"label": "k001", "x": 1, "y": 0},
+ {"label": "k002", "x": 2, "y": 0},
+
+ {"label": "k003", "x": 0, "y": 1},
+ {"label": "k004", "x": 1, "y": 1},
+ {"label": "k005", "x": 2, "y": 1},
+
+ {"label": "k006", "x": 0, "y": 2},
+ {"label": "k007", "x": 1, "y": 2},
+ {"label": "k008", "x": 2, "y": 2},
+
+ {"label": "k009", "x": 0, "y": 3},
+ {"label": "k010", "x": 1, "y": 3},
+ {"label": "k011", "x": 2, "y": 3}
+
+ ]
+ }
+ }
+}
diff --git a/keyboards/40percentclub/polyandry/keymaps/default/keymap.c b/keyboards/40percentclub/polyandry/keymaps/default/keymap.c
new file mode 100644
index 00000000000..3e1f278b35e
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/keymaps/default/keymap.c
@@ -0,0 +1,30 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ KC_1, KC_2, KC_3,
+ KC_4, KC_5, KC_6,
+ KC_7, KC_8, KC_9,
+ KC_0, KC_A, KC_B
+ ),
+
+};
+
+
+
diff --git a/keyboards/40percentclub/polyandry/polyandry.c b/keyboards/40percentclub/polyandry/polyandry.c
new file mode 100644
index 00000000000..2b4be589b8f
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/polyandry.c
@@ -0,0 +1,16 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General 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 "polyandry.h"
diff --git a/keyboards/40percentclub/polyandry/polyandry.h b/keyboards/40percentclub/polyandry/polyandry.h
new file mode 100644
index 00000000000..5baf87ba623
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/polyandry.h
@@ -0,0 +1,24 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#pragma once
+
+#include "quantum.h"
+
+#ifdef KEYBOARD_40percentclub_polyandry_promicro
+ #include "promicro.h"
+#elif KEYBOARD_40percentclub_polyandry_teensy2
+ #include "teensy2.h"
+#endif
diff --git a/keyboards/40percentclub/polyandry/promicro/config.h b/keyboards/40percentclub/polyandry/promicro/config.h
new file mode 100644
index 00000000000..e6f8643c441
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/promicro/config.h
@@ -0,0 +1,34 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General 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 */
+#define MATRIX_ROWS 1
+#define MATRIX_COLS 12
+
+/* key matrix pins
+ * Direct pins is not used because there is not a shared ground position
+ * between all compatible microcontrollers.
+*/
+#define MATRIX_ROW_PINS { D7 }
+#define MATRIX_COL_PINS { D1, D0, D4, C6, E6, B4, F4, F5, F6, F7, B3, B2 }
+#define UNUSED_PINS
+
+/* doesn't really matter lol */
+#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/polyandry/promicro/promicro.c b/keyboards/40percentclub/polyandry/promicro/promicro.c
new file mode 100644
index 00000000000..ea1dd517886
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/promicro/promicro.c
@@ -0,0 +1,16 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General 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 "promicro.h"
diff --git a/keyboards/40percentclub/polyandry/promicro/promicro.h b/keyboards/40percentclub/polyandry/promicro/promicro.h
new file mode 100644
index 00000000000..65e2b4b9c2a
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/promicro/promicro.h
@@ -0,0 +1,27 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General 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 "polyandry.h"
+
+#define LAYOUT( \
+ K000, K001, K002, \
+ K003, K004, K005, \
+ K006, K007, K008, \
+ K009, K010, K011 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 } \
+}
diff --git a/keyboards/40percentclub/polyandry/promicro/rules.mk b/keyboards/40percentclub/polyandry/promicro/rules.mk
new file mode 100644
index 00000000000..cf663a7ed6a
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/promicro/rules.mk
@@ -0,0 +1,5 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
diff --git a/keyboards/40percentclub/polyandry/readme.md b/keyboards/40percentclub/polyandry/readme.md
new file mode 100644
index 00000000000..b6acf3cd7ff
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/readme.md
@@ -0,0 +1,53 @@
+# Polyandry/polypad
+
+![Polyandry](https://1.bp.blogspot.com/-97uoICZvZec/XSdpvCVFFlI/AAAAAAACVZY/BlCRjxjDqDAxOZa6C5ddQr0OsFQ9VZv5wCLcBGAs/s1600/d1.jpg)
+===
+
+3x4/4x3 grid layout, multiple controllers supported
+- Pro Micro
+- PJRC Teensy 2.0
+
+(**The below are not currently ported:**)
+
+- PJRC Teensy LC/3.2
+- PJRC Teensy 3.5/3.6
+- Adafruit ItsyBitsy ATMega32u4
+- Adafruit ItsyBitsy M0
+- Adafruit ItsyBitsy M4
+
+The matrix is electrically 1x12 with no diodes, with a thirteenth pin used for the column rather than a ground in order to be compatible with all the listed microcontrollers..
+
+The default keymap is a testing keymap that is intended to make sure all of the keys on the matrix are working and properly assigned.
+
+[The original (minimal arduino sketch) firmware, with support for some unsupported controllers](https://git.40percent.club/di0ib/Misc/src/branch/master/polyandry)
+
+Keyboard Maintainer: QMK Community
+Hardware Supported: Polyandry PCB
+Hardware Availability: [Polyandry gerbers are on 40percent.club](https://www.40percent.club/2019/07/polyandry.html)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make 40percentclub/polyandry:default
+ or
+ qmk compile -kb 40percentclub/polyandry -km default
+
+Default firmware is for an Arduino Pro Micro knockoff.
+
+If you would like to specify a controller:
+
+ make 40percentclub/polyandry/promicro:default
+ or
+ qmk compile -kb 40percentclub/polyandry/promicro -km default
+ make 40percentclub/polyandry/teensy2:default
+ or
+ qmk compile -kb 40percentclub/polyandry/teensy2 -km default
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the top left key of the keyboard (top right or bottom left in horizontal configuration)
+* **Physical reset**: Briefly press the button on the bottom of the microcontroller or, if not present short the pin marked RST to a GND.
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/40percentclub/polyandry/rules.mk b/keyboards/40percentclub/polyandry/rules.mk
new file mode 100644
index 00000000000..4632df1dee6
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/rules.mk
@@ -0,0 +1,17 @@
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+DEFAULT_FOLDER = 40percentclub/polyandry/promicro
diff --git a/keyboards/40percentclub/polyandry/teensy2/config.h b/keyboards/40percentclub/polyandry/teensy2/config.h
new file mode 100644
index 00000000000..d730ce6f940
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/teensy2/config.h
@@ -0,0 +1,36 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General 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 */
+#define MATRIX_ROWS 1
+#define MATRIX_COLS 12
+
+/* key matrix pins */
+
+// Note from original contributor (ryjelsum):
+// Untested - don't have teensy2. if some keys do not function or are in wrong place,
+// please check the pin definitions. I may have screwed up. :)
+
+#define MATRIX_ROW_PINS { D3 }
+#define MATRIX_COL_PINS { B7, D0, D1, D2, C6, C7, F6, F7, B6, B5, D7, D6 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/polyandry/teensy2/rules.mk b/keyboards/40percentclub/polyandry/teensy2/rules.mk
new file mode 100644
index 00000000000..320633f80f3
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/teensy2/rules.mk
@@ -0,0 +1,5 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = halfkay
diff --git a/keyboards/40percentclub/polyandry/teensy2/teensy2.c b/keyboards/40percentclub/polyandry/teensy2/teensy2.c
new file mode 100644
index 00000000000..33cfb6e553c
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/teensy2/teensy2.c
@@ -0,0 +1,16 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General 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 "teensy2.h"
diff --git a/keyboards/40percentclub/polyandry/teensy2/teensy2.h b/keyboards/40percentclub/polyandry/teensy2/teensy2.h
new file mode 100644
index 00000000000..118eb353a4f
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/teensy2/teensy2.h
@@ -0,0 +1,32 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General 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
+
+//NOTE TO FUTURE FROM RYJELSUM (original contributor):
+//This has been unchanged from the promicro.h file.
+//I DO NOT HAVE A TEENSY 2.0 TO TEST WITH.
+//I believe this should still work - but it's not a sure thing.
+
+#include "polyandry.h"
+
+#define LAYOUT( \
+ K000, K001, K002, \
+ K003, K004, K005, \
+ K006, K007, K008, \
+ K009, K010, K011 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 } \
+}
diff --git a/keyboards/40percentclub/sixpack/rules.mk b/keyboards/40percentclub/sixpack/rules.mk
index 16878cce869..b701535fa73 100644
--- a/keyboards/40percentclub/sixpack/rules.mk
+++ b/keyboards/40percentclub/sixpack/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/40percentclub/tomato/rules.mk b/keyboards/40percentclub/tomato/rules.mk
index 4cd1fd625bb..a8461a35f77 100644
--- a/keyboards/40percentclub/tomato/rules.mk
+++ b/keyboards/40percentclub/tomato/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/40percentclub/ut47/keymaps/rgb/keymap.c b/keyboards/40percentclub/ut47/keymaps/rgb/keymap.c
index 77fa5b4017f..ae8ad3e378e 100644
--- a/keyboards/40percentclub/ut47/keymaps/rgb/keymap.c
+++ b/keyboards/40percentclub/ut47/keymaps/rgb/keymap.c
@@ -43,8 +43,8 @@ LAYOUT(
),
LAYOUT(
- KC_FN6, KC_FN7, KC_FN8, KC_FN9, KC_FN10, KC_FN11, KC_FN12, KC_FN13, KC_FN14, KC_FN15, KC_FN16, KC_DELETE,
- _______, _______, _______, _______, _______, _______, _______, KC_FN17, KC_FN18, KC_FN19, KC_FN20, KC_FN21,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DELETE,
+ _______, _______, _______, _______, _______, _______, _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
_______, _______, _______, KC_CAPS, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
),
diff --git a/keyboards/40percentclub/ut47/post_rules.mk b/keyboards/40percentclub/ut47/post_rules.mk
new file mode 100644
index 00000000000..7051ee413d7
--- /dev/null
+++ b/keyboards/40percentclub/ut47/post_rules.mk
@@ -0,0 +1,4 @@
+ifeq ($(strip $(LED_ENABLE)), yes)
+ OPT_DEFS += -DLED_ENABLE
+ SRC += led.c
+endif
diff --git a/keyboards/40percentclub/ut47/rules.mk b/keyboards/40percentclub/ut47/rules.mk
index 5253dcbdbdb..dd4860b610b 100644
--- a/keyboards/40percentclub/ut47/rules.mk
+++ b/keyboards/40percentclub/ut47/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
@@ -22,8 +22,3 @@ AUDIO_ENABLE = no # Audio output
# custom matrix setup
CUSTOM_MATRIX = yes
SRC += matrix.c protocol/serial_uart.c
-
-ifeq ($(strip $(LED_ENABLE)), yes)
- OPT_DEFS += -DLED_ENABLE
- SRC += led.c
-endif
diff --git a/keyboards/45_ats/rules.mk b/keyboards/45_ats/rules.mk
index 077733ea876..bcf7f652ec3 100644
--- a/keyboards/45_ats/rules.mk
+++ b/keyboards/45_ats/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/4pplet/aekiso60/rev_a/rules.mk b/keyboards/4pplet/aekiso60/rev_a/rules.mk
index fadbd21ffcf..895a77853d7 100644
--- a/keyboards/4pplet/aekiso60/rev_a/rules.mk
+++ b/keyboards/4pplet/aekiso60/rev_a/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/4pplet/bootleg/rev_a/rules.mk b/keyboards/4pplet/bootleg/rev_a/rules.mk
index 4f707bd3655..f155258a95a 100644
--- a/keyboards/4pplet/bootleg/rev_a/rules.mk
+++ b/keyboards/4pplet/bootleg/rev_a/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk b/keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk
index e80e0296a96..5c6e7c6131b 100644
--- a/keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk
+++ b/keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk
@@ -4,7 +4,7 @@ MCU = STM32F072
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/4pplet/steezy60/rev_a/rules.mk b/keyboards/4pplet/steezy60/rev_a/rules.mk
index fadbd21ffcf..895a77853d7 100644
--- a/keyboards/4pplet/steezy60/rev_a/rules.mk
+++ b/keyboards/4pplet/steezy60/rev_a/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/4pplet/waffling60/rev_a/rules.mk b/keyboards/4pplet/waffling60/rev_a/rules.mk
index fadbd21ffcf..895a77853d7 100644
--- a/keyboards/4pplet/waffling60/rev_a/rules.mk
+++ b/keyboards/4pplet/waffling60/rev_a/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/4pplet/waffling60/rev_b/rules.mk b/keyboards/4pplet/waffling60/rev_b/rules.mk
index 0017a978fe3..4fae5efa1e1 100644
--- a/keyboards/4pplet/waffling60/rev_b/rules.mk
+++ b/keyboards/4pplet/waffling60/rev_b/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/6ball/6ball.h b/keyboards/6ball/6ball.h
index 234235341dc..ef73a720531 100644
--- a/keyboards/6ball/6ball.h
+++ b/keyboards/6ball/6ball.h
@@ -1,14 +1,10 @@
-#ifndef SIXBALL_H
-#define SIXBALL_H
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- k01, k02, k03, \
- k04, k05, k06 \
-) \
-{ \
- { k02, k03, k06, k05, k04, k01 } \
-}
-
-#endif
+ k05, k00, k01, \
+ k04, k03, k02 \
+) { \
+ { k00, k01, k02, k03, k04, k05 } \
+}
diff --git a/keyboards/6ball/config.h b/keyboards/6ball/config.h
index c7d4d3354ac..cc496d675a8 100644
--- a/keyboards/6ball/config.h
+++ b/keyboards/6ball/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -46,5 +45,3 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
#define TAPPING_TERM 200
-
-#endif
diff --git a/keyboards/7splus/rules.mk b/keyboards/7splus/rules.mk
index 8c14ac20b97..659bea9fdd4 100644
--- a/keyboards/7splus/rules.mk
+++ b/keyboards/7splus/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/9key/9key.h b/keyboards/9key/9key.h
index b60dc53c008..ad809da4b81 100644
--- a/keyboards/9key/9key.h
+++ b/keyboards/9key/9key.h
@@ -1,17 +1,13 @@
-#ifndef NINEKEY_H
-#define NINEKEY_H
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- k00, k01, k02, \
- k10, k11, k12, \
- k20, k21, k22 \
-) \
-{ \
+ k00, k01, k02, \
+ k10, k11, k12, \
+ k20, k21, k22 \
+) { \
{ k00, k01, k02 }, \
{ k10, k11, k12 }, \
{ k20, k21, k22 } \
-}
-
-#endif
+}
diff --git a/keyboards/9key/config.h b/keyboards/9key/config.h
index 3c7b4e0ad67..b0462eb50fe 100644
--- a/keyboards/9key/config.h
+++ b/keyboards/9key/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -45,5 +44,3 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
#define TAPPING_TERM 200
-
-#endif
diff --git a/keyboards/absinthe/rules.mk b/keyboards/absinthe/rules.mk
index b94b6338f05..3b482f12abd 100644
--- a/keyboards/absinthe/rules.mk
+++ b/keyboards/absinthe/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/acekeyboard/titan60/rules.mk b/keyboards/acekeyboard/titan60/rules.mk
index 5bbc093a88e..4a6f5a95fc4 100644
--- a/keyboards/acekeyboard/titan60/rules.mk
+++ b/keyboards/acekeyboard/titan60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/acheron/arctic/rules.mk b/keyboards/acheron/arctic/rules.mk
index 17aa543022b..f68afca696c 100644
--- a/keyboards/acheron/arctic/rules.mk
+++ b/keyboards/acheron/arctic/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/acheron/austin/keymaps/via/rules.mk b/keyboards/acheron/austin/keymaps/via/rules.mk
index 5abd4f5bdf9..666e72557b0 100644
--- a/keyboards/acheron/austin/keymaps/via/rules.mk
+++ b/keyboards/acheron/austin/keymaps/via/rules.mk
@@ -1,2 +1,2 @@
VIA_ENABLE = yes
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
diff --git a/keyboards/acheron/austin/rules.mk b/keyboards/acheron/austin/rules.mk
index d89d8cae819..c0c730767bb 100644
--- a/keyboards/acheron/austin/rules.mk
+++ b/keyboards/acheron/austin/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/acheron/elongate/rules.mk b/keyboards/acheron/elongate/rules.mk
index ca8c6525403..53961525692 100644
--- a/keyboards/acheron/elongate/rules.mk
+++ b/keyboards/acheron/elongate/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/acheron/keebspcb/rules.mk b/keyboards/acheron/keebspcb/rules.mk
index 562436e64a7..ae1f29e35ea 100644
--- a/keyboards/acheron/keebspcb/rules.mk
+++ b/keyboards/acheron/keebspcb/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/acheron/lasgweloth/rules.mk b/keyboards/acheron/lasgweloth/rules.mk
index 1cc42c0ee3b..197c40da230 100644
--- a/keyboards/acheron/lasgweloth/rules.mk
+++ b/keyboards/acheron/lasgweloth/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/acheron/shark/keymaps/via/rules.mk b/keyboards/acheron/shark/keymaps/via/rules.mk
index 5abd4f5bdf9..666e72557b0 100644
--- a/keyboards/acheron/shark/keymaps/via/rules.mk
+++ b/keyboards/acheron/shark/keymaps/via/rules.mk
@@ -1,2 +1,2 @@
VIA_ENABLE = yes
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
diff --git a/keyboards/acheron/shark/rules.mk b/keyboards/acheron/shark/rules.mk
index 0ab8fd2a914..9e9f5397652 100644
--- a/keyboards/acheron/shark/rules.mk
+++ b/keyboards/acheron/shark/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/acr60/rules.mk b/keyboards/acr60/rules.mk
index 89557e4ea79..d45a04dedf5 100644
--- a/keyboards/acr60/rules.mk
+++ b/keyboards/acr60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/aeboards/aegis/rules.mk b/keyboards/aeboards/aegis/rules.mk
index 0bedbef4539..2eb8c5dbde3 100644
--- a/keyboards/aeboards/aegis/rules.mk
+++ b/keyboards/aeboards/aegis/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/aeboards/constellation/rev1/rules.mk b/keyboards/aeboards/constellation/rev1/rules.mk
index 7e84b22ca4d..a4ff057a2eb 100755
--- a/keyboards/aeboards/constellation/rev1/rules.mk
+++ b/keyboards/aeboards/constellation/rev1/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/aeboards/constellation/rev2/config.h b/keyboards/aeboards/constellation/rev2/config.h
index 0780c9bf934..de42885b470 100755
--- a/keyboards/aeboards/constellation/rev2/config.h
+++ b/keyboards/aeboards/constellation/rev2/config.h
@@ -47,8 +47,8 @@
#define LOCKING_RESYNC_ENABLE
// I2C setup
-#define I2C1_SCL 8
-#define I2C1_SDA 9
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
#define I2C1_SCL_PAL_MODE 4
#define I2C1_SDA_PAL_MODE 4
#define I2C1_TIMINGR_PRESC 0U
diff --git a/keyboards/aeboards/constellation/rev2/rules.mk b/keyboards/aeboards/constellation/rev2/rules.mk
index b0a36174137..5e3bd4ae491 100755
--- a/keyboards/aeboards/constellation/rev2/rules.mk
+++ b/keyboards/aeboards/constellation/rev2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/aeboards/ext65/keymaps/default/keymap.c b/keyboards/aeboards/ext65/keymaps/default/keymap.c
index 466b34539f9..1f933ca1cab 100644
--- a/keyboards/aeboards/ext65/keymaps/default/keymap.c
+++ b/keyboards/aeboards/ext65/keymaps/default/keymap.c
@@ -89,10 +89,11 @@ void render_mod_status(uint8_t modifiers) {
oled_write_ln(PSTR(" "), false);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
render_layer_state();
render_keylock_status(host_keyboard_led_state());
render_mod_status(get_mods()|get_oneshot_mods());
+ return false;
}
#endif
diff --git a/keyboards/aeboards/ext65/keymaps/via/keymap.c b/keyboards/aeboards/ext65/keymaps/via/keymap.c
index 466b34539f9..1f933ca1cab 100644
--- a/keyboards/aeboards/ext65/keymaps/via/keymap.c
+++ b/keyboards/aeboards/ext65/keymaps/via/keymap.c
@@ -89,10 +89,11 @@ void render_mod_status(uint8_t modifiers) {
oled_write_ln(PSTR(" "), false);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
render_layer_state();
render_keylock_status(host_keyboard_led_state());
render_mod_status(get_mods()|get_oneshot_mods());
+ return false;
}
#endif
diff --git a/keyboards/aeboards/ext65/rev1/rules.mk b/keyboards/aeboards/ext65/rev1/rules.mk
index 0bedbef4539..2eb8c5dbde3 100644
--- a/keyboards/aeboards/ext65/rev1/rules.mk
+++ b/keyboards/aeboards/ext65/rev1/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/aeboards/ext65/rev2/config.h b/keyboards/aeboards/ext65/rev2/config.h
index 778fc3ea6ce..498e345ad74 100644
--- a/keyboards/aeboards/ext65/rev2/config.h
+++ b/keyboards/aeboards/ext65/rev2/config.h
@@ -56,8 +56,8 @@ along with this program. If not, see .
#define WS2812_EXTERNAL_PULLUP
// I2C OLED defines
-#define I2C1_SCL 8
-#define I2C1_SDA 9
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
#define I2C1_SCL_PAL_MODE 1
#define I2C1_SDA_PAL_MODE 1
diff --git a/keyboards/aeboards/ext65/rev2/rev2.c b/keyboards/aeboards/ext65/rev2/rev2.c
index ce16eb4c488..f303a122e91 100644
--- a/keyboards/aeboards/ext65/rev2/rev2.c
+++ b/keyboards/aeboards/ext65/rev2/rev2.c
@@ -9,7 +9,7 @@ void board_init(void) {
SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_SPI2_DMA_RMP);
}
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
return OLED_ROTATION_90; // rotates the display 90 degrees
}
diff --git a/keyboards/aeboards/ext65/rev2/rules.mk b/keyboards/aeboards/ext65/rev2/rules.mk
index 3cc7a65076c..2d3aaa1761d 100644
--- a/keyboards/aeboards/ext65/rev2/rules.mk
+++ b/keyboards/aeboards/ext65/rev2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/afternoonlabs/breeze/rev0/rules.mk b/keyboards/afternoonlabs/breeze/rev0/rules.mk
index 20ddd6d07f4..d77fba8561e 100644
--- a/keyboards/afternoonlabs/breeze/rev0/rules.mk
+++ b/keyboards/afternoonlabs/breeze/rev0/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/afternoonlabs/breeze/rev1/rules.mk b/keyboards/afternoonlabs/breeze/rev1/rules.mk
index a5a950c648b..19e0f238cd1 100644
--- a/keyboards/afternoonlabs/breeze/rev1/rules.mk
+++ b/keyboards/afternoonlabs/breeze/rev1/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER = caterina
# change yes to no to disable
#
SPLIT_KEYBOARD = yes
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk b/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk
index 687dde568cb..a66da7d65ec 100644
--- a/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk
+++ b/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk b/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk
index 20ddd6d07f4..d77fba8561e 100644
--- a/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk
+++ b/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk b/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk
index 20ddd6d07f4..d77fba8561e 100644
--- a/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk
+++ b/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/ai03/andromeda/rules.mk b/keyboards/ai03/andromeda/rules.mk
index 17aa543022b..f68afca696c 100644
--- a/keyboards/ai03/andromeda/rules.mk
+++ b/keyboards/ai03/andromeda/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/ai03/equinox/rev0/rules.mk b/keyboards/ai03/equinox/rev0/rules.mk
index be4a048405d..7d36ae3c456 100644
--- a/keyboards/ai03/equinox/rev0/rules.mk
+++ b/keyboards/ai03/equinox/rev0/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ai03/equinox/rev1/rules.mk b/keyboards/ai03/equinox/rev1/rules.mk
index be4a048405d..7d36ae3c456 100644
--- a/keyboards/ai03/equinox/rev1/rules.mk
+++ b/keyboards/ai03/equinox/rev1/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ai03/orbit/orbit.h b/keyboards/ai03/orbit/orbit.h
index 2ada881f3fc..39f1ebb0e36 100644
--- a/keyboards/ai03/orbit/orbit.h
+++ b/keyboards/ai03/orbit/orbit.h
@@ -13,8 +13,8 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef ORBIT_H
-#define ORBIT_H
+
+#pragma once
#include "quantum.h"
@@ -35,29 +35,27 @@
#endif
#endif
+#define XXX KC_NO
#define LAYOUT( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
- L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
- L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
- L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
+ 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, \
L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45 \
-) \
-{ \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, L36 }, \
- { KC_NO, L41, L42, L43, L44, L45, L46 }, \
- { 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, KC_NO } \
+) { \
+ { 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, 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, R44, R45, XXX } \
}
extern void led_toggle(int id, bool on);
void set_all_leds(bool leds[6]);
extern void set_layer_indicators(uint8_t layer);
-
-#endif
diff --git a/keyboards/ai03/orbit/split_util.c b/keyboards/ai03/orbit/split_util.c
index a83ff5bc67e..2352e5a1118 100644
--- a/keyboards/ai03/orbit/split_util.c
+++ b/keyboards/ai03/orbit/split_util.c
@@ -8,7 +8,7 @@
#include "quantum.h"
#ifdef EE_HANDS
-# include "tmk_core/common/eeprom.h"
+# include "eeprom.h"
# include "eeconfig.h"
#endif
diff --git a/keyboards/ai03/orbit_x/rules.mk b/keyboards/ai03/orbit_x/rules.mk
index 9a9a9acf5a9..269b3cb4f48 100644
--- a/keyboards/ai03/orbit_x/rules.mk
+++ b/keyboards/ai03/orbit_x/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/ai03/polaris/rules.mk b/keyboards/ai03/polaris/rules.mk
index 2824b33cc2e..4fe9f0b6e35 100644
--- a/keyboards/ai03/polaris/rules.mk
+++ b/keyboards/ai03/polaris/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ai03/vega/rules.mk b/keyboards/ai03/vega/rules.mk
index 17aa543022b..f68afca696c 100644
--- a/keyboards/ai03/vega/rules.mk
+++ b/keyboards/ai03/vega/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/ai03/voyager60_alps/rules.mk b/keyboards/ai03/voyager60_alps/rules.mk
index 706a8ae201e..cf5d2e685d9 100644
--- a/keyboards/ai03/voyager60_alps/rules.mk
+++ b/keyboards/ai03/voyager60_alps/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ajisai74/rules.mk b/keyboards/ajisai74/rules.mk
index 4d39af4d29b..0ce4c12edd3 100644
--- a/keyboards/ajisai74/rules.mk
+++ b/keyboards/ajisai74/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/akb/eb46/rules.mk b/keyboards/akb/eb46/rules.mk
index df18dc487eb..5c194d1aeb6 100644
--- a/keyboards/akb/eb46/rules.mk
+++ b/keyboards/akb/eb46/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/akb/raine/rules.mk b/keyboards/akb/raine/rules.mk
index df18dc487eb..5c194d1aeb6 100644
--- a/keyboards/akb/raine/rules.mk
+++ b/keyboards/akb/raine/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/aleblazer/zodiark/keymaps/default/keymap.c b/keyboards/aleblazer/zodiark/keymaps/default/keymap.c
index 84953ec582c..c6a81c67f9c 100644
--- a/keyboards/aleblazer/zodiark/keymaps/default/keymap.c
+++ b/keyboards/aleblazer/zodiark/keymaps/default/keymap.c
@@ -135,12 +135,13 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return rotation;
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
print_status_narrow();
} else {
render_logo();
}
+ return false;
}
#endif
diff --git a/keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c b/keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c
index 99c5c5e4ee5..ca8f91f1df3 100644
--- a/keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c
+++ b/keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c
@@ -138,12 +138,13 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return rotation;
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
print_status_narrow();
} else {
render_logo();
}
+ return false;
}
#endif
diff --git a/keyboards/aleblazer/zodiark/keymaps/via/oled.c b/keyboards/aleblazer/zodiark/keymaps/via/oled.c
index 5e4959ab2ec..8642bacb054 100644
--- a/keyboards/aleblazer/zodiark/keymaps/via/oled.c
+++ b/keyboards/aleblazer/zodiark/keymaps/via/oled.c
@@ -67,12 +67,13 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return rotation;
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
print_status_narrow();
} else {
render_logo();
}
+ return false;
}
#endif
diff --git a/keyboards/aleblazer/zodiark/rules.mk b/keyboards/aleblazer/zodiark/rules.mk
index a332d6440b4..b91bc280ec7 100644
--- a/keyboards/aleblazer/zodiark/rules.mk
+++ b/keyboards/aleblazer/zodiark/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/aleth42/rev1/rules.mk b/keyboards/aleth42/rev1/rules.mk
index 134b0490c0e..423adb206a0 100644
--- a/keyboards/aleth42/rev1/rules.mk
+++ b/keyboards/aleth42/rev1/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/alf/dc60/dc60.h b/keyboards/alf/dc60/dc60.h
index db5154a28cf..710ae703ed4 100644
--- a/keyboards/alf/dc60/dc60.h
+++ b/keyboards/alf/dc60/dc60.h
@@ -13,11 +13,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef DC60_H
-#define DC60_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
// The first section contains all of the arguments representing the physical
@@ -25,18 +27,15 @@
// The second converts the arguments into a two-dimensional array which
// represents the switch matrix.
#define LAYOUT_all( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KOD, KOE, \
- K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K42, K43, K45, K47, K48, K4A, K4B, K4C, K4D, K4E \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KOD, KOE }, \
- { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
- { K40, KC_NO, K42, K43, KC_NO, K45, KC_NO, K47, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k42, k43, k45, k47, k48, k4A, k4B, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, XXX, k42, k43, XXX, k45, XXX, k47, k48, XXX, k4A, k4B, k4C, k4D, k4E } \
}
-
-#endif
diff --git a/keyboards/alf/x11/rules.mk b/keyboards/alf/x11/rules.mk
index b4bdead9bfc..b38b4e961a6 100644
--- a/keyboards/alf/x11/rules.mk
+++ b/keyboards/alf/x11/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/alf/x2/config.h b/keyboards/alf/x2/config.h
index 2e545f1a5bb..a6f4958b054 100644
--- a/keyboards/alf/x2/config.h
+++ b/keyboards/alf/x2/config.h
@@ -19,31 +19,33 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ALF
-#define PRODUCT X2
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER ALF
+#define PRODUCT X2
/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 15
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
/* key matrix pins */
-#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
-#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3, F4 }
+#define MATRIX_ROW_PINS \
+ { D0, D1, D2, D3, D5 }
+#define MATRIX_COL_PINS \
+ { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3, F4 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION COL2ROW
+#define DIODE_DIRECTION COL2ROW
#define LED_CAPS_LOCK_PIN B2
-#define LED_PIN_ON_STATE 0
+#define LED_PIN_ON_STATE 0
/* number of backlight levels */
-#define BACKLIGHT_PIN B6
+#define BACKLIGHT_PIN B6
#ifdef BACKLIGHT_PIN
-#define BACKLIGHT_LEVELS 3
+# define BACKLIGHT_LEVELS 3
#endif
/* Set 0 if debouncing isn't needed */
@@ -57,9 +59,9 @@
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 4
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_ANIMATIONS
+# define RGBLED_NUM 4
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
#endif
diff --git a/keyboards/alf/x2/rules.mk b/keyboards/alf/x2/rules.mk
index c5e4effbacb..5635a02825f 100644
--- a/keyboards/alf/x2/rules.mk
+++ b/keyboards/alf/x2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/alfredslab/swift65/solder/rules.mk b/keyboards/alfredslab/swift65/solder/rules.mk
index 6edc1625819..776f7f0f2df 100644
--- a/keyboards/alfredslab/swift65/solder/rules.mk
+++ b/keyboards/alfredslab/swift65/solder/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/allison/rules.mk b/keyboards/allison/rules.mk
index dc7d341bbb2..5f180ae00de 100644
--- a/keyboards/allison/rules.mk
+++ b/keyboards/allison/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/allison_numpad/rules.mk b/keyboards/allison_numpad/rules.mk
index a45d7a8419e..3e72995f712 100644
--- a/keyboards/allison_numpad/rules.mk
+++ b/keyboards/allison_numpad/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/alpha/alpha.h b/keyboards/alpha/alpha.h
index 025a3ac5fbb..204e03822bb 100755
--- a/keyboards/alpha/alpha.h
+++ b/keyboards/alpha/alpha.h
@@ -1,16 +1,15 @@
-#ifndef KB_H
-#define KB_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, \
- K200, K201, K202, K203, K205, K207, K208, K209 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \
+ k20, k21, k22, k23, k25, k27, k28, k29 \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109 }, \
- { K200, K201, K202, K203, KC_NO, K205, KC_NO, K207, K208, K209 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, XXX, k25, XXX, k27, k28, k29 } \
}
-
-#endif
diff --git a/keyboards/alpha/config.h b/keyboards/alpha/config.h
index 8c7edd57989..ae1c69656b5 100755
--- a/keyboards/alpha/config.h
+++ b/keyboards/alpha/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -45,5 +44,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/alpha/rules.mk b/keyboards/alpha/rules.mk
index 965667d9ad6..c6fa2140898 100755
--- a/keyboards/alpha/rules.mk
+++ b/keyboards/alpha/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/alpine65/rules.mk b/keyboards/alpine65/rules.mk
index f287f36642a..70187a24919 100644
--- a/keyboards/alpine65/rules.mk
+++ b/keyboards/alpine65/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/alps64/rules.mk b/keyboards/alps64/rules.mk
index 91eb9f2e117..4eee16c4085 100644
--- a/keyboards/alps64/rules.mk
+++ b/keyboards/alps64/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change to no to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/alu84/rules.mk b/keyboards/alu84/rules.mk
index 6fb11c13bb5..90e8db917e6 100755
--- a/keyboards/alu84/rules.mk
+++ b/keyboards/alu84/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/amag23/rules.mk b/keyboards/amag23/rules.mk
index 5fab15c3912..8f11a2b9f15 100644
--- a/keyboards/amag23/rules.mk
+++ b/keyboards/amag23/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = bootloadhid
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/amj40/rules.mk b/keyboards/amj40/rules.mk
index 81f481950a6..aeff331e7e1 100755
--- a/keyboards/amj40/rules.mk
+++ b/keyboards/amj40/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/amj96/amj96.h b/keyboards/amj96/amj96.h
index 9fcd07d5dec..bd4e6883609 100644
--- a/keyboards/amj96/amj96.h
+++ b/keyboards/amj96/amj96.h
@@ -34,5 +34,5 @@
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \
{ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, \
- { K60, K61, K62, K63, K64, K65, K66, XXX, K68, K69, K6A, K6B, K6C, K6D, K6E, K6F } \
+ { K60, K61, K62, K63, K64, K65, K66, XXX, K68, K69, K6A, K6B, K6C, K6D, K6E, K6F } \
}
diff --git a/keyboards/amjkeyboard/amj66/rules.mk b/keyboards/amjkeyboard/amj66/rules.mk
index 424b34fa2e5..550796f8618 100644
--- a/keyboards/amjkeyboard/amj66/rules.mk
+++ b/keyboards/amjkeyboard/amj66/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/amjpad/amjpad.h b/keyboards/amjpad/amjpad.h
index d9a05162156..976a7ab041a 100644
--- a/keyboards/amjpad/amjpad.h
+++ b/keyboards/amjpad/amjpad.h
@@ -1,5 +1,4 @@
-#ifndef AMJPAD_H
-#define ADMJPAD_H
+#pragma once
#include "quantum.h"
@@ -24,40 +23,36 @@
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT_numpad_6x4( \
- k00, k01, k02, k03, \
- k10, k11, k12, k13, \
- k20, k21, k22, \
- k30, k31, k32, k23, \
- k40, k41, k42, \
- k50, k52, k43 \
-) \
-{ \
- {k00, k01, k02, k03}, \
- {k10, k11, k12, k13}, \
- {k20, k21, k22, k23}, \
- {k30, k31, k32, XXX}, \
- {k40, k41, k42, k43}, \
- {k50, XXX, k52, XXX} \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, \
+ k30, k31, k32, k23, \
+ k40, k41, k42, \
+ k50, k52, k43 \
+) { \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, k23 }, \
+ { k30, k31, k32, XXX }, \
+ { k40, k41, k42, k43 }, \
+ { k50, XXX, k52, XXX } \
}
#define LAYOUT_ortho_6x4( \
- k00, k01, k02, k03, \
- k10, k11, k12, k13, \
- k20, k21, k22, k23, \
- k30, k31, k32, k33, \
- k40, k41, k42, k43, \
- k50, k51, k52, k53 \
-) \
-{ \
- {k00, k01, k02, k03}, \
- {k10, k11, k12, k13}, \
- {k20, k21, k22, k23}, \
- {k30, k31, k32, k33}, \
- {k40, k41, k42, k43}, \
- {k50, k51, k52, k53} \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, k23, \
+ k30, k31, k32, k33, \
+ k40, k41, k42, k43, \
+ k50, k51, k52, k53 \
+) { \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, k23 }, \
+ { k30, k31, k32, k33 }, \
+ { k40, k41, k42, k43 }, \
+ { k50, k51, k52, k53 } \
}
void matrix_init_user(void);
void matrix_scan_user(void);
-
-#endif
diff --git a/keyboards/amjpad/config.h b/keyboards/amjpad/config.h
index 6bac897e73d..f1d57592b53 100644
--- a/keyboards/amjpad/config.h
+++ b/keyboards/amjpad/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -87,5 +86,3 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/anavi/macropad8/keymaps/default/keymap.c b/keyboards/anavi/macropad8/keymaps/default/keymap.c
index 5b69532e1b3..84be7f3c68e 100644
--- a/keyboards/anavi/macropad8/keymaps/default/keymap.c
+++ b/keyboards/anavi/macropad8/keymaps/default/keymap.c
@@ -22,7 +22,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false);
oled_write_P(PSTR("Active layer: "), false);
@@ -57,5 +57,6 @@ void oled_task_user(void) {
snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val());
oled_write_ln(rgbStatusLine2, false);
#endif
+ return false;
}
#endif
diff --git a/keyboards/anavi/macropad8/keymaps/git/keymap.c b/keyboards/anavi/macropad8/keymaps/git/keymap.c
index c1f1681ec09..9b7afb5d695 100644
--- a/keyboards/anavi/macropad8/keymaps/git/keymap.c
+++ b/keyboards/anavi/macropad8/keymaps/git/keymap.c
@@ -105,7 +105,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false);
oled_write_P(PSTR("Active layer: "), false);
@@ -140,5 +140,6 @@ void oled_task_user(void) {
snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val());
oled_write_ln(rgbStatusLine2, false);
#endif
+ return false;
}
#endif
diff --git a/keyboards/anavi/macropad8/keymaps/kicad/keymap.c b/keyboards/anavi/macropad8/keymaps/kicad/keymap.c
index ba47550347c..e75d588478c 100644
--- a/keyboards/anavi/macropad8/keymaps/kicad/keymap.c
+++ b/keyboards/anavi/macropad8/keymaps/kicad/keymap.c
@@ -75,7 +75,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false);
oled_write_P(PSTR("Layer: "), false);
@@ -113,5 +113,6 @@ void oled_task_user(void) {
snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val());
oled_write_ln(rgbStatusLine2, false);
#endif
+ return false;
}
#endif
diff --git a/keyboards/anavi/macropad8/keymaps/kodi/keymap.c b/keyboards/anavi/macropad8/keymaps/kodi/keymap.c
index 61cedc81099..f99a22d7233 100644
--- a/keyboards/anavi/macropad8/keymaps/kodi/keymap.c
+++ b/keyboards/anavi/macropad8/keymaps/kodi/keymap.c
@@ -41,7 +41,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false);
oled_write_P(PSTR("Active layer: "), false);
@@ -76,5 +76,6 @@ void oled_task_user(void) {
snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val());
oled_write_ln(rgbStatusLine2, false);
#endif
+ return false;
}
#endif
diff --git a/keyboards/anavi/macropad8/keymaps/obs/keymap.c b/keyboards/anavi/macropad8/keymaps/obs/keymap.c
index e740482bbdb..1d9fd38eed1 100644
--- a/keyboards/anavi/macropad8/keymaps/obs/keymap.c
+++ b/keyboards/anavi/macropad8/keymaps/obs/keymap.c
@@ -58,7 +58,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false);
oled_write_P(PSTR("Active layer: "), false);
@@ -93,5 +93,6 @@ void oled_task_user(void) {
snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val());
oled_write_ln(rgbStatusLine2, false);
#endif
+ return false;
}
#endif
diff --git a/keyboards/anavi/macropad8/keymaps/zoom/keymap.c b/keyboards/anavi/macropad8/keymaps/zoom/keymap.c
index ef47102fa56..965bbec4292 100644
--- a/keyboards/anavi/macropad8/keymaps/zoom/keymap.c
+++ b/keyboards/anavi/macropad8/keymaps/zoom/keymap.c
@@ -57,7 +57,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false);
oled_write_P(PSTR("Active layer: "), false);
@@ -92,5 +92,6 @@ void oled_task_user(void) {
snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val());
oled_write_ln(rgbStatusLine2, false);
#endif
+ return false;
}
#endif
diff --git a/keyboards/angel64/alpha/keymaps/default/keymap.c b/keyboards/angel64/alpha/keymaps/default/keymap.c
index 802ff138bb3..0f2a8dada1a 100644
--- a/keyboards/angel64/alpha/keymaps/default/keymap.c
+++ b/keyboards/angel64/alpha/keymaps/default/keymap.c
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#ifdef OLED_ENABLE
-void oled_task_user(void) {
+bool oled_task_user(void) {
oled_write_P(PSTR("Layer: "), false);
switch (biton32(layer_state)) {
case BASE:
@@ -56,5 +56,6 @@ void oled_task_user(void) {
oled_write_P(IS_HOST_LED_ON(USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
oled_write_P(IS_HOST_LED_ON(USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
oled_write_P(IS_HOST_LED_ON(USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
+ return false;
}
#endif
diff --git a/keyboards/angel64/rev1/keymaps/default/keymap.c b/keyboards/angel64/rev1/keymaps/default/keymap.c
index ff06e418c16..7ad3964e24f 100644
--- a/keyboards/angel64/rev1/keymaps/default/keymap.c
+++ b/keyboards/angel64/rev1/keymaps/default/keymap.c
@@ -25,10 +25,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#ifdef OLED_ENABLE
-void oled_task_user(void) {
+bool oled_task_user(void) {
// Host Keyboard LED Status
oled_write_P(IS_HOST_LED_ON(USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
oled_write_P(IS_HOST_LED_ON(USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
oled_write_P(IS_HOST_LED_ON(USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
+ return false;
}
#endif
diff --git a/keyboards/angel64/rev1/keymaps/kakunpc/keymap.c b/keyboards/angel64/rev1/keymaps/kakunpc/keymap.c
index 3780c5e745c..6c5184c1b3a 100644
--- a/keyboards/angel64/rev1/keymaps/kakunpc/keymap.c
+++ b/keyboards/angel64/rev1/keymaps/kakunpc/keymap.c
@@ -173,7 +173,7 @@ void matrix_scan_user(void) {
}
#ifdef OLED_ENABLE
-void oled_task_user(void) {
+bool oled_task_user(void) {
oled_write_P(PSTR("Layer: "), false);
switch (biton32(layer_state)) {
case BASE:
@@ -191,5 +191,6 @@ void oled_task_user(void) {
oled_write_P(IS_HOST_LED_ON(USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
oled_write_P(IS_HOST_LED_ON(USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
oled_write_P(IS_HOST_LED_ON(USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
+ return false;
}
#endif
diff --git a/keyboards/anomalykb/a65i/rules.mk b/keyboards/anomalykb/a65i/rules.mk
index 22247fab3cc..22fb8d3fe78 100644
--- a/keyboards/anomalykb/a65i/rules.mk
+++ b/keyboards/anomalykb/a65i/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/aos/tkl/rules.mk b/keyboards/aos/tkl/rules.mk
index 0b052e33124..98872ee082e 100644
--- a/keyboards/aos/tkl/rules.mk
+++ b/keyboards/aos/tkl/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/aozora/aozora.c b/keyboards/aozora/aozora.c
new file mode 100644
index 00000000000..44668583489
--- /dev/null
+++ b/keyboards/aozora/aozora.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Salmon Cat Studio
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General 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 "aozora.h"
diff --git a/keyboards/aozora/aozora.h b/keyboards/aozora/aozora.h
new file mode 100644
index 00000000000..30a4258ac8d
--- /dev/null
+++ b/keyboards/aozora/aozora.h
@@ -0,0 +1,47 @@
+/* Copyright 2021 Salmon Cat Studio
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3D, K3E, K3F, \
+ K40, K41, K42, K44, K48, K49, K4A, K4D, K4E, K4F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, KC_NO, K3D, K3E, K3F }, \
+ { K40, K41, K42, KC_NO, K44, KC_NO, KC_NO, KC_NO, K48, K49, K4A, KC_NO, KC_NO, K4D, K4E, K4F }, \
+}
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0G, K0D, K0E, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
+ K30, K3G, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3E, K3F, \
+ K40, K41, K42, K44, K48, K49, K4A, K4D, K4E, K4F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, KC_NO, KC_NO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, K3E, K3F, K3G }, \
+ { K40, K41, K42, KC_NO, K44, KC_NO, KC_NO, KC_NO, K48, K49, K4A, KC_NO, KC_NO, K4D, K4E, K4F, KC_NO }, \
+}
diff --git a/keyboards/aozora/config.h b/keyboards/aozora/config.h
new file mode 100644
index 00000000000..67972a84b2b
--- /dev/null
+++ b/keyboards/aozora/config.h
@@ -0,0 +1,48 @@
+/* Copyright 2021 Salmon Cat Studio
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x04D8
+#define PRODUCT_ID 0xE86A
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Salmon Cat Studio
+#define PRODUCT Aozora
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 17
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { F6, F5, F4, F1, F0 }
+#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D0, D1, D4, D6, D7, B4, B5, B6, C6, C7, F7, D2}
+
+#define DIODE_DIRECTION COL2ROW
+
+/* EEPROM for via */
+#define DYNAMIC_KEYMAP_LAYER_COUNT 2
diff --git a/keyboards/aozora/hotswap/config.h b/keyboards/aozora/hotswap/config.h
deleted file mode 100644
index 60277f2635b..00000000000
--- a/keyboards/aozora/hotswap/config.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright 2021 Salmon Cat Studio
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA75
-#define PRODUCT_ID 0x4014
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Salmon Cat Studio
-#define PRODUCT Aozora
-
-/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 16
-
-/*
- * Keyboard Matrix Assignments
- *
- * Change this to how you wired your keyboard
- * COLS: AVR pins used for columns, left to right
- * ROWS: AVR pins used for rows, top to bottom
- * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
- * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
- *
- */
-#define MATRIX_ROW_PINS { F6, F5, F4, F1, F0 }
-#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D0, D1, D4, D6, D7, B4, B5, B6, C6, C7, F7 }
-
-#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/aozora/hotswap/hotswap.c b/keyboards/aozora/hotswap/hotswap.c
deleted file mode 100644
index f8197c3c00e..00000000000
--- a/keyboards/aozora/hotswap/hotswap.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2021 Salmon Cat Studio
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General 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 "hotswap.h"
\ No newline at end of file
diff --git a/keyboards/aozora/hotswap/hotswap.h b/keyboards/aozora/hotswap/hotswap.h
deleted file mode 100644
index 5282aaf81cd..00000000000
--- a/keyboards/aozora/hotswap/hotswap.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright 2021 Salmon Cat Studio
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include "quantum.h"
-
-#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3D, K3E, K3F, \
- K40, K41, K42, K44, K48, K49, K4A, K4D, K4E, K4F \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, KC_NO, K3D, K3E, K3F }, \
- { K40, K41, K42, KC_NO, K44, KC_NO, KC_NO, KC_NO, K48, K49, K4A, KC_NO, KC_NO, K4D, K4E, K4F }, \
-}
-
diff --git a/keyboards/aozora/hotswap/info.json b/keyboards/aozora/hotswap/info.json
deleted file mode 100644
index dbceb3b371f..00000000000
--- a/keyboards/aozora/hotswap/info.json
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- "keyboard_name": "Aozora",
- "url": "https://salmoncat.studio/pages/aozora-%E9%9D%92%E7%A9%BA-6-9-21-7-10-21",
- "maintainer": "Phooood",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"label":"K00 (F6,B0)", "x":0, "y":0},
- {"label":"K01 (F6,B1)", "x":1, "y":0},
- {"label":"K02 (F6,B2)", "x":2, "y":0},
- {"label":"K03 (F6,B3)", "x":3, "y":0},
- {"label":"K04 (F6,B7)", "x":4, "y":0},
- {"label":"K05 (F6,D0)", "x":5, "y":0},
- {"label":"K06 (F6,D1)", "x":6, "y":0},
- {"label":"K07 (F6,D4)", "x":7, "y":0},
- {"label":"K08 (F6,D6)", "x":8, "y":0},
- {"label":"K09 (F6,D7)", "x":9, "y":0},
- {"label":"K0A (F6,B4)", "x":10, "y":0},
- {"label":"K0B (F6,B5)", "x":11, "y":0},
- {"label":"K0C (F6,B6)", "x":12, "y":0},
- {"label":"K0D (F6,C6)", "x":13, "y":0, "w":2},
- {"label":"K0E (F6,C7)", "x":15.25, "y":0},
- {"label":"K0F (F6,F7)", "x":16.25, "y":0},
- {"label":"K10 (F5,B0)", "x":0, "y":1, "w":1.5},
- {"label":"K11 (F5,B1)", "x":1.5, "y":1},
- {"label":"K12 (F5,B2)", "x":2.5, "y":1},
- {"label":"K13 (F5,B3)", "x":3.5, "y":1},
- {"label":"K14 (F5,B7)", "x":4.5, "y":1},
- {"label":"K15 (F5,D0)", "x":5.5, "y":1},
- {"label":"K16 (F5,D1)", "x":6.5, "y":1},
- {"label":"K17 (F5,D4)", "x":7.5, "y":1},
- {"label":"K18 (F5,D6)", "x":8.5, "y":1},
- {"label":"K19 (F5,D7)", "x":9.5, "y":1},
- {"label":"K1A (F5,B4)", "x":10.5, "y":1},
- {"label":"K1B (F5,B5)", "x":11.5, "y":1},
- {"label":"K1C (F5,B6)", "x":12.5, "y":1},
- {"label":"K1D (F5,C6)", "x":13.5, "y":1, "w":1.5},
- {"label":"K1E (F5,C7)", "x":15.25, "y":1},
- {"label":"K1F (F5,F7)", "x":16.25, "y":1},
- {"label":"K20 (F4,B0)", "x":0, "y":2, "w":1.75},
- {"label":"K21 (F4,B1)", "x":1.75, "y":2},
- {"label":"K22 (F4,B2)", "x":2.75, "y":2},
- {"label":"K23 (F4,B3)", "x":3.75, "y":2},
- {"label":"K24 (F4,B7)", "x":4.75, "y":2},
- {"label":"K25 (F4,D0)", "x":5.75, "y":2},
- {"label":"K26 (F4,D1)", "x":6.75, "y":2},
- {"label":"K27 (F4,D4)", "x":7.75, "y":2},
- {"label":"K28 (F4,D6)", "x":8.75, "y":2},
- {"label":"K29 (F4,D7)", "x":9.75, "y":2},
- {"label":"K2A (F4,B4)", "x":10.75, "y":2},
- {"label":"K2B (F4,B5)", "x":11.75, "y":2},
- {"label":"K2D (F4,C6)", "x":12.75, "y":2, "w":2.25},
- {"label":"K30 (F1,B0)", "x":0, "y":3, "w":2.25},
- {"label":"K31 (F1,B1)", "x":2.25, "y":3},
- {"label":"K32 (F1,B2)", "x":3.25, "y":3},
- {"label":"K33 (F1,B3)", "x":4.25, "y":3},
- {"label":"K34 (F1,B7)", "x":5.25, "y":3},
- {"label":"K35 (F1,D0)", "x":6.25, "y":3},
- {"label":"K36 (F1,D1)", "x":7.25, "y":3},
- {"label":"K37 (F1,D4)", "x":8.25, "y":3},
- {"label":"K38 (F1,D6)", "x":9.25, "y":3},
- {"label":"K39 (F1,D7)", "x":10.25, "y":3},
- {"label":"K3A (F1,B4)", "x":11.25, "y":3},
- {"label":"K3D (F1,C6)", "x":12.25, "y":3, "w":2.75},
- {"label":"K3E (F1,C7)", "x":15.25, "y":3},
- {"label":"K3F (F1,F7)", "x":16.25, "y":3},
- {"label":"K40 (F0,B0)", "x":0, "y":4, "w":1.25},
- {"label":"K41 (F0,B1)", "x":1.25, "y":4, "w":1.25},
- {"label":"K42 (F0,B2)", "x":2.5, "y":4, "w":1.25},
- {"label":"K44 (F0,B7)", "x":3.75, "y":4, "w":6.25},
- {"label":"K48 (F0,D6)", "x":10, "y":4, "w":1.25},
- {"label":"K49 (F0,D7)", "x":11.25, "y":4, "w":1.25},
- {"label":"K4A (F0,B4)", "x":12.5, "y":4, "w":1.25},
- {"label":"K4D (F0,C6)", "x":14.25, "y":4},
- {"label":"K4E (F0,C7)", "x":15.25, "y":4},
- {"label":"K4F (F0,F7)", "x":16.25, "y":4}
- ]
- }
- }
-}
diff --git a/keyboards/aozora/hotswap/keymaps/default/keymap.c b/keyboards/aozora/hotswap/keymaps/default/keymap.c
deleted file mode 100644
index f941f5dff6d..00000000000
--- a/keyboards/aozora/hotswap/keymaps/default/keymap.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2021 Salmon Cat Studio
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PSCR, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, MO(1),
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
- ),
- [1] = LAYOUT(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
-
-};
diff --git a/keyboards/aozora/hotswap/readme.md b/keyboards/aozora/hotswap/readme.md
deleted file mode 100644
index 157b58c0b82..00000000000
--- a/keyboards/aozora/hotswap/readme.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Aozora
-
-A 65%-style 69-key keyboard featuring a cloud-shaped badge.
-
-![SCS Aozora](https://i.imgur.com/dL5nonc.jpg)
-
-* Keyboard Maintainer: [Food](https://github.com/Phooood)
-* Hardware Supported: [Aozora](https://salmoncat.studio/pages/aozora-%E9%9D%92%E7%A9%BA-6-9-21-7-10-21)
-* Hardware Availability: [salmoncat.studio](https://salmoncat.studio/pages/aozora-%E9%9D%92%E7%A9%BA-6-9-21-7-10-21) | GB is over.
-
-Make example for this keyboard (after setting up your build environment):
-
- make aozora/hotswap:default
-
-To reset, press the button on the back of the PCB.
-
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/aozora/hotswap/rules.mk b/keyboards/aozora/hotswap/rules.mk
deleted file mode 100644
index a913ba36ad0..00000000000
--- a/keyboards/aozora/hotswap/rules.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader selection
-BOOTLOADER = atmel-dfu
-
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = yes # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-
diff --git a/keyboards/aozora/info.json b/keyboards/aozora/info.json
new file mode 100644
index 00000000000..0f442cc12eb
--- /dev/null
+++ b/keyboards/aozora/info.json
@@ -0,0 +1,83 @@
+{
+ "keyboard_name": "Aozora",
+ "url": "https://salmoncat.studio/pages/aozora-%E9%9D%92%E7%A9%BA-6-9-21-7-10-21",
+ "maintainer": "Phooood",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"K00 (F6,B0)", "x":0, "y":0},
+ {"label":"K01 (F6,B1)", "x":1, "y":0},
+ {"label":"K02 (F6,B2)", "x":2, "y":0},
+ {"label":"K03 (F6,B3)", "x":3, "y":0},
+ {"label":"K04 (F6,B7)", "x":4, "y":0},
+ {"label":"K05 (F6,D0)", "x":5, "y":0},
+ {"label":"K06 (F6,D1)", "x":6, "y":0},
+ {"label":"K07 (F6,D4)", "x":7, "y":0},
+ {"label":"K08 (F6,D6)", "x":8, "y":0},
+ {"label":"K09 (F6,D7)", "x":9, "y":0},
+ {"label":"K0A (F6,B4)", "x":10, "y":0},
+ {"label":"K0B (F6,B5)", "x":11, "y":0},
+ {"label":"K0C (F6,B6)", "x":12, "y":0},
+ {"label":"K0D (F6,C6)", "x":13, "y":0, "w":2},
+ {"label":"K0E (F6,C7)", "x":15.25, "y":0},
+ {"label":"K0F (F6,F7)", "x":16.25, "y":0},
+ {"label":"K10 (F5,B0)", "x":0, "y":1, "w":1.5},
+ {"label":"K11 (F5,B1)", "x":1.5, "y":1},
+ {"label":"K12 (F5,B2)", "x":2.5, "y":1},
+ {"label":"K13 (F5,B3)", "x":3.5, "y":1},
+ {"label":"K14 (F5,B7)", "x":4.5, "y":1},
+ {"label":"K15 (F5,D0)", "x":5.5, "y":1},
+ {"label":"K16 (F5,D1)", "x":6.5, "y":1},
+ {"label":"K17 (F5,D4)", "x":7.5, "y":1},
+ {"label":"K18 (F5,D6)", "x":8.5, "y":1},
+ {"label":"K19 (F5,D7)", "x":9.5, "y":1},
+ {"label":"K1A (F5,B4)", "x":10.5, "y":1},
+ {"label":"K1B (F5,B5)", "x":11.5, "y":1},
+ {"label":"K1C (F5,B6)", "x":12.5, "y":1},
+ {"label":"K1D (F5,C6)", "x":13.5, "y":1, "w":1.5},
+ {"label":"K1E (F5,C7)", "x":15.25, "y":1},
+ {"label":"K1F (F5,F7)", "x":16.25, "y":1},
+ {"label":"K20 (F4,B0)", "x":0, "y":2, "w":1.75},
+ {"label":"K21 (F4,B1)", "x":1.75, "y":2},
+ {"label":"K22 (F4,B2)", "x":2.75, "y":2},
+ {"label":"K23 (F4,B3)", "x":3.75, "y":2},
+ {"label":"K24 (F4,B7)", "x":4.75, "y":2},
+ {"label":"K25 (F4,D0)", "x":5.75, "y":2},
+ {"label":"K26 (F4,D1)", "x":6.75, "y":2},
+ {"label":"K27 (F4,D4)", "x":7.75, "y":2},
+ {"label":"K28 (F4,D6)", "x":8.75, "y":2},
+ {"label":"K29 (F4,D7)", "x":9.75, "y":2},
+ {"label":"K2A (F4,B4)", "x":10.75, "y":2},
+ {"label":"K2B (F4,B5)", "x":11.75, "y":2},
+ {"label":"K2D (F4,C6)", "x":12.75, "y":2, "w":2.25},
+ {"label":"K30 (F1,B0)", "x":0, "y":3, "w":2.25},
+ {"label":"K31 (F1,B1)", "x":2.25, "y":3},
+ {"label":"K32 (F1,B2)", "x":3.25, "y":3},
+ {"label":"K33 (F1,B3)", "x":4.25, "y":3},
+ {"label":"K34 (F1,B7)", "x":5.25, "y":3},
+ {"label":"K35 (F1,D0)", "x":6.25, "y":3},
+ {"label":"K36 (F1,D1)", "x":7.25, "y":3},
+ {"label":"K37 (F1,D4)", "x":8.25, "y":3},
+ {"label":"K38 (F1,D6)", "x":9.25, "y":3},
+ {"label":"K39 (F1,D7)", "x":10.25, "y":3},
+ {"label":"K3A (F1,B4)", "x":11.25, "y":3},
+ {"label":"K3D (F1,C6)", "x":12.25, "y":3, "w":2.75},
+ {"label":"K3E (F1,C7)", "x":15.25, "y":3},
+ {"label":"K3F (F1,F7)", "x":16.25, "y":3},
+ {"label":"K40 (F0,B0)", "x":0, "y":4, "w":1.25},
+ {"label":"K41 (F0,B1)", "x":1.25, "y":4, "w":1.25},
+ {"label":"K42 (F0,B2)", "x":2.5, "y":4, "w":1.25},
+ {"label":"K44 (F0,B7)", "x":3.75, "y":4, "w":6.25},
+ {"label":"K48 (F0,D6)", "x":10, "y":4, "w":1.25},
+ {"label":"K49 (F0,D7)", "x":11.25, "y":4, "w":1.25},
+ {"label":"K4A (F0,B4)", "x":12.5, "y":4, "w":1.25},
+ {"label":"K4D (F0,C6)", "x":14.25, "y":4},
+ {"label":"K4E (F0,C7)", "x":15.25, "y":4},
+ {"label":"K4F (F0,F7)", "x":16.25, "y":4}
+ ]
+ },
+ "LAYOUT_all": {
+ "layout": [{"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"|", "x":13, "y":1.25}, {"label":"Backspace", "x":14, "y":1.25}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Del", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"~", "x":12.75, "y":3.25}, {"label":"Enter", "x":13.75, "y":3.25, "w":1.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"|", "x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"\\", "x":12.25, "y":4.25}, {"label":"Shift", "x":13.25, "y":4.25, "w":1.75}, {"label":"\u2191", "x":15.25, "y":4.25}, {"label":"Fn", "x":16.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, {"label":"\u2190", "x":14.25, "y":5.25}, {"label":"\u2193", "x":15.25, "y":5.25}, {"label":"\u2192", "x":16.25, "y":5.25}]
+ }
+ }
+}
diff --git a/keyboards/aozora/keymaps/default/keymap.c b/keyboards/aozora/keymaps/default/keymap.c
new file mode 100644
index 00000000000..8229aaa29a7
--- /dev/null
+++ b/keyboards/aozora/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 Salmon Cat Studio
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PSCR, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/aozora/keymaps/default_all/keymap.c b/keyboards/aozora/keymaps/default_all/keymap.c
new file mode 100644
index 00000000000..3376f2e8cd3
--- /dev/null
+++ b/keyboards/aozora/keymaps/default_all/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 Salmon Cat Studio
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General 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 "sendstring_jis.h" // macro sendstring for jis keyboard マクロ文字列送信時に日本語キーボード設定での文字化け回避
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PSCR, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_PIPE, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/aozora/keymaps/via/keymap.c b/keyboards/aozora/keymaps/via/keymap.c
new file mode 100644
index 00000000000..3376f2e8cd3
--- /dev/null
+++ b/keyboards/aozora/keymaps/via/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 Salmon Cat Studio
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General 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 "sendstring_jis.h" // macro sendstring for jis keyboard マクロ文字列送信時に日本語キーボード設定での文字化け回避
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PSCR, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_PIPE, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/aozora/keymaps/via/rules.mk b/keyboards/aozora/keymaps/via/rules.mk
new file mode 100644
index 00000000000..32f462d06ca
--- /dev/null
+++ b/keyboards/aozora/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no
\ No newline at end of file
diff --git a/keyboards/aozora/readme.md b/keyboards/aozora/readme.md
new file mode 100644
index 00000000000..8d95940f874
--- /dev/null
+++ b/keyboards/aozora/readme.md
@@ -0,0 +1,17 @@
+# Aozora
+
+A 65%-style 69-key keyboard featuring a cloud-shaped badge.
+
+![SCS Aozora](https://i.imgur.com/dL5nonc.jpg)
+
+* Keyboard Maintainer: [Food](https://github.com/Phooood)
+* Hardware Supported: [Aozora](https://salmoncat.studio/pages/aozora-%E9%9D%92%E7%A9%BA-6-9-21-7-10-21)
+* Hardware Availability: [salmoncat.studio](https://salmoncat.studio/pages/aozora-%E9%9D%92%E7%A9%BA-6-9-21-7-10-21) | GB is over.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make aozora:default
+
+To reset, press the button on the back of the PCB.
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/aozora/rules.mk b/keyboards/aozora/rules.mk
new file mode 100644
index 00000000000..59dae222fbe
--- /dev/null
+++ b/keyboards/aozora/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
diff --git a/keyboards/aplyard/aplx6/rev2/keymaps/default/keymap.c b/keyboards/aplyard/aplx6/rev2/keymaps/default/keymap.c
index 5f3ec5b5ddb..9c8ac545b23 100644
--- a/keyboards/aplyard/aplx6/rev2/keymaps/default/keymap.c
+++ b/keyboards/aplyard/aplx6/rev2/keymaps/default/keymap.c
@@ -113,8 +113,9 @@ static void render_logo(void) {
}
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
render_logo();
+ return false;
}
#endif
diff --git a/keyboards/arabica37/keymaps/default/keymap.c b/keyboards/arabica37/keymaps/default/keymap.c
index 5a363152d7d..5a7a3c27380 100644
--- a/keyboards/arabica37/keymaps/default/keymap.c
+++ b/keyboards/arabica37/keymaps/default/keymap.c
@@ -149,7 +149,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return rotation;
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
void render_status(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
@@ -195,5 +195,6 @@ void oled_task_user(void) {
} else {
render_logo(); // Renders a static logo
}
+ return false;
}
#endif
diff --git a/keyboards/arch_36/keymaps/default/keymap.c b/keyboards/arch_36/keymaps/default/keymap.c
index 5dff792067c..797ca8798fe 100644
--- a/keyboards/arch_36/keymaps/default/keymap.c
+++ b/keyboards/arch_36/keymaps/default/keymap.c
@@ -298,12 +298,13 @@ static void render_logo(void) {
oled_write_raw_P(logo, 1024);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
}
else {
render_logo();
}
+ return false;
}
#endif
diff --git a/keyboards/arch_36/keymaps/obosob/keymap.c b/keyboards/arch_36/keymaps/obosob/keymap.c
index 00e1a837baa..104ee378f51 100644
--- a/keyboards/arch_36/keymaps/obosob/keymap.c
+++ b/keyboards/arch_36/keymaps/obosob/keymap.c
@@ -807,12 +807,13 @@ static void render_logo(void) {
}
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
}
else {
render_logo();
}
+ return false;
}
#endif
diff --git a/keyboards/ares/rules.mk b/keyboards/ares/rules.mk
index d726cc5ec04..bd8029ae8d7 100644
--- a/keyboards/ares/rules.mk
+++ b/keyboards/ares/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = bootloadhid
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/arisu/rules.mk b/keyboards/arisu/rules.mk
index 49ec442115c..9c78569f938 100644
--- a/keyboards/arisu/rules.mk
+++ b/keyboards/arisu/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/arrayperipherals/1x4p1/rules.mk b/keyboards/arrayperipherals/1x4p1/rules.mk
index ddfb1280e27..2c15412036d 100644
--- a/keyboards/arrayperipherals/1x4p1/rules.mk
+++ b/keyboards/arrayperipherals/1x4p1/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ash1800/rules.mk b/keyboards/ash1800/rules.mk
index 058392135a7..390fda9c3b5 100644
--- a/keyboards/ash1800/rules.mk
+++ b/keyboards/ash1800/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/ash_xiix/rules.mk b/keyboards/ash_xiix/rules.mk
index 49ec442115c..9c78569f938 100644
--- a/keyboards/ash_xiix/rules.mk
+++ b/keyboards/ash_xiix/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ashpil/modelm_usbc/rules.mk b/keyboards/ashpil/modelm_usbc/rules.mk
index 8b717faa402..f731f5e3e32 100644
--- a/keyboards/ashpil/modelm_usbc/rules.mk
+++ b/keyboards/ashpil/modelm_usbc/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/at101_bh/rules.mk b/keyboards/at101_bh/rules.mk
index 3d435af4530..5517774dcf6 100644
--- a/keyboards/at101_bh/rules.mk
+++ b/keyboards/at101_bh/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = halfkay
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/atreus/feather/rules.mk b/keyboards/atreus/feather/rules.mk
index 35d74315394..ad0b4a5046b 100644
--- a/keyboards/atreus/feather/rules.mk
+++ b/keyboards/atreus/feather/rules.mk
@@ -10,5 +10,6 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
CONSOLE_ENABLE = no
diff --git a/keyboards/atreus62/config.h b/keyboards/atreus62/config.h
index 2d4ab99c627..31baef145f0 100644
--- a/keyboards/atreus62/config.h
+++ b/keyboards/atreus62/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -71,5 +70,3 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/atxkb/1894/rules.mk b/keyboards/atxkb/1894/rules.mk
index ac64cc93f6b..7f128bc58e3 100644
--- a/keyboards/atxkb/1894/rules.mk
+++ b/keyboards/atxkb/1894/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/aves65/rules.mk b/keyboards/aves65/rules.mk
index 579f11a46d9..9bbae521a47 100644
--- a/keyboards/aves65/rules.mk
+++ b/keyboards/aves65/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/axolstudio/helpo/rules.mk b/keyboards/axolstudio/helpo/rules.mk
index dffe35fa387..9354e10b87a 100644
--- a/keyboards/axolstudio/helpo/rules.mk
+++ b/keyboards/axolstudio/helpo/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = usbasploader
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/axolstudio/yeti/rules.mk b/keyboards/axolstudio/yeti/rules.mk
index 9374846d491..9182c69fdd8 100644
--- a/keyboards/axolstudio/yeti/rules.mk
+++ b/keyboards/axolstudio/yeti/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/baguette/baguette.h b/keyboards/baguette/baguette.h
index e3945bea7ee..70440f76272 100644
--- a/keyboards/baguette/baguette.h
+++ b/keyboards/baguette/baguette.h
@@ -13,11 +13,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef BAGUETTE_H
-#define BAGUETTE_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* This a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
@@ -27,33 +29,29 @@
* represents the switch matrix.
*/
#define LAYOUT_ansi( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K42, K43, K47, K4B, K4C, K4D, K4E, K4F \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, KC_NO }, \
- { KC_NO, KC_NO, K42, K43, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, KC_NO, K4B, K4C, K4D, K4E, K4F } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k42, k43, k47, k4B, k4C, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { XXX, XXX, k42, k43, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4B, k4C, k4D, k4E, k4F } \
}
#define LAYOUT_iso( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1F, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K42, K43, K47, K4B, K4C, K4D, K4E, K4F \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, KC_NO, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, K2D, KC_NO, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, KC_NO }, \
- { KC_NO, KC_NO, K42, K43, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, KC_NO, K4B, K4C, K4D, K4E, K4F } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k42, k43, k47, k4B, k4C, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, XXX, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2D, XXX, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { XXX, XXX, k42, k43, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4B, k4C, k4D, k4E, k4F } \
}
-
-#endif
diff --git a/keyboards/bakeneko60/rules.mk b/keyboards/bakeneko60/rules.mk
index 1490d263c07..abec374090e 100644
--- a/keyboards/bakeneko60/rules.mk
+++ b/keyboards/bakeneko60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/bakeneko65/rev2/rules.mk b/keyboards/bakeneko65/rev2/rules.mk
index a3cd44fa428..e881cb00119 100644
--- a/keyboards/bakeneko65/rev2/rules.mk
+++ b/keyboards/bakeneko65/rev2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/bakeneko65/rev3/rules.mk b/keyboards/bakeneko65/rev3/rules.mk
index c79f74e34b9..9906266f482 100644
--- a/keyboards/bakeneko65/rev3/rules.mk
+++ b/keyboards/bakeneko65/rev3/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/bandominedoni/config.h b/keyboards/bandominedoni/config.h
index ee0de340a48..629c6af884b 100644
--- a/keyboards/bandominedoni/config.h
+++ b/keyboards/bandominedoni/config.h
@@ -140,145 +140,113 @@
// # define REDUCE_RGB_MATRIX_EFFECTS_2
// # ifdef AUDIO_ENABLE
-# ifdef CONSOLE_ENABLE
-// # define DISABLE_RGB_MATRIX_SOLID_COLOR
-# define DISABLE_RGB_MATRIX_ALPHAS_MODS
-# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define DISABLE_RGB_MATRIX_BREATHING
-# define DISABLE_RGB_MATRIX_BAND_SAT
-# define DISABLE_RGB_MATRIX_BAND_VAL
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define DISABLE_RGB_MATRIX_CYCLE_ALL
-# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define DISABLE_RGB_MATRIX_DUAL_BEACON
-# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define DISABLE_RGB_MATRIX_RAINDROPS
-# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define DISABLE_RGB_MATRIX_HUE_BREATHING
-# define DISABLE_RGB_MATRIX_HUE_PENDULUM
-# define DISABLE_RGB_MATRIX_HUE_WAVE
-# define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_SPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# else
-# define DISABLE_RGB_MATRIX_SOLID_COLOR
-# define DISABLE_RGB_MATRIX_ALPHAS_MODS
-# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define DISABLE_RGB_MATRIX_BREATHING
-# define DISABLE_RGB_MATRIX_BAND_SAT
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-
-// RAINDROPS don't match well with layer LED indicator (oc) using rgb_matrix_set_color().
-# define DISABLE_RGB_MATRIX_RAINDROPS
-# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// Recommendend not to use then.
-
-# if defined(REDUCE_RGB_MATRIX_EFFECTS) || defined(VIA_ENABLE)
+# ifdef CONSOLE_ENABLE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# else
+// #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_PINWHEEL_SAT
+// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+// #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+// #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_FRACTAL
+# define ENABLE_RGB_MATRIX_PIXEL_RAIN
+
+# if !defined(REDUCE_RGB_MATRIX_EFFECTS) && !defined(VIA_ENABLE)
// # ifdef REDUCE_RGB_MATRIX_EFFECTS
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define DISABLE_RGB_MATRIX_DUAL_BEACON
-# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
-# endif
-
-# define DISABLE_RGB_MATRIX_HUE_BREATHING
-# define DISABLE_RGB_MATRIX_HUE_PENDULUM
-# define DISABLE_RGB_MATRIX_HUE_WAVE
-# define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-
-# if defined(REDUCE_RGB_MATRIX_EFFECTS_2) || defined(VIA_ENABLE)
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_DUAL_BEACON
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# endif
+
+// #define ENABLE_RGB_MATRIX_HUE_BREATHING
+// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
+// #define ENABLE_RGB_MATRIX_HUE_WAVE
+// #define ENABLE_RGB_MATRIX_FRACTAL
+// #define ENABLE_RGB_MATRIX_PIXEL_RAIN
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+
+# if !defined(REDUCE_RGB_MATRIX_EFFECTS_2) && !defined(VIA_ENABLE)
// # ifdef REDUCE_RGB_MATRIX_EFFECTS_2
-# define DISABLE_RGB_MATRIX_BAND_VAL
-# define DISABLE_RGB_MATRIX_CYCLE_ALL
-# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# endif
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_SOLID_SPLASH
-# endif // AUDIO_ENABLE
-
-// #define DISABLE_RGB_MATRIX_SOLID_COLOR
-// #define DISABLE_RGB_MATRIX_ALPHAS_MODS
-// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-// #define DISABLE_RGB_MATRIX_BREATHING
-// #define DISABLE_RGB_MATRIX_BAND_SAT // white background ver. of _BAND_VAL
-// #define DISABLE_RGB_MATRIX_BAND_VAL
-// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-// #define DISABLE_RGB_MATRIX_CYCLE_ALL
-// #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-// #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-// #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-// #define DISABLE_RGB_MATRIX_DUAL_BEACON
-// #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
-// #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
-// #define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define DISABLE_RGB_MATRIX_RAINDROPS
-// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS //White ver of above.
-// #define DISABLE_RGB_MATRIX_HUE_BREATHING
-// #define DISABLE_RGB_MATRIX_HUE_PENDULUM
-// #define DISABLE_RGB_MATRIX_HUE_WAVE
-// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define DISABLE_RGB_MATRIX_SPLASH
-// #define DISABLE_RGB_MATRIX_MULTISPLASH
-// #define DISABLE_RGB_MATRIX_SOLID_SPLASH
-// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_RGB_MATRIX_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+# endif
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+// #define ENABLE_RGB_MATRIX_SPLASH
+// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
+# endif // AUDIO_ENABLE
+
+// #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_FRACTAL
+// #define ENABLE_RGB_MATRIX_PIXEL_RAIN
+
+// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+// #define ENABLE_RGB_MATRIX_SPLASH
+// #define ENABLE_RGB_MATRIX_MULTISPLASH
+// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
+// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
#endif // RGB_MATRIX_ENABLE
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/bandominedoni/rgb_matrix_user.inc b/keyboards/bandominedoni/rgb_matrix_user.inc
index 72f5b4f6648..77ad22c1ce7 100644
--- a/keyboards/bandominedoni/rgb_matrix_user.inc
+++ b/keyboards/bandominedoni/rgb_matrix_user.inc
@@ -9,8 +9,8 @@ bool my_party_rocks(effect_params_t* params) {
RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
// rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
rgb_matrix_set_color_all(rgb.r, rgb.g, rgb.b);
- return led_max < DRIVER_LED_TOTAL;
+ return rgb_matrix_check_finished_leds(led_max);
}
-# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
-#endif // RGB_MATRIX_KEYREACTIVE_ENABLED
+# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+#endif // RGB_MATRIX_KEYREACTIVE_ENABLED
diff --git a/keyboards/bantam44/bantam44.h b/keyboards/bantam44/bantam44.h
index 38afbbdde70..f680f9eac26 100644
--- a/keyboards/bantam44/bantam44.h
+++ b/keyboards/bantam44/bantam44.h
@@ -1,23 +1,21 @@
-#ifndef BANTAM44_H
-#define BANTAM44_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38 \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, K2A }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
- { K30, K31, K32, KC_NO, K33, KC_NO, K34, KC_NO, K35, K36, K37, K38 } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k34, k36, k38, k39, k3A, k3B \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, XXX, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, XXX, k34, XXX, k36, XXX, k38, k39, k3A, k3B } \
}
-
-#endif
diff --git a/keyboards/bantam44/config.h b/keyboards/bantam44/config.h
index b468b28ccb6..6cff8b2899e 100644
--- a/keyboards/bantam44/config.h
+++ b/keyboards/bantam44/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -72,5 +71,3 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/bantam44/rules.mk b/keyboards/bantam44/rules.mk
index e61b995e629..209890d9a2c 100644
--- a/keyboards/bantam44/rules.mk
+++ b/keyboards/bantam44/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = halfkay
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/barleycorn/rules.mk b/keyboards/barleycorn/rules.mk
index 5d335fe9a38..3a6d577687d 100644
--- a/keyboards/barleycorn/rules.mk
+++ b/keyboards/barleycorn/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = usbasploader
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/barleycorn_smd/rules.mk b/keyboards/barleycorn_smd/rules.mk
index 1c8ae60e8f9..1cb4022709e 100644
--- a/keyboards/barleycorn_smd/rules.mk
+++ b/keyboards/barleycorn_smd/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/barracuda/rules.mk b/keyboards/barracuda/rules.mk
index 74ae3960000..19b49ab12f1 100644
--- a/keyboards/barracuda/rules.mk
+++ b/keyboards/barracuda/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/basekeys/slice/keymaps/default/keymap.c b/keyboards/basekeys/slice/keymaps/default/keymap.c
index ad5e9d9ffe7..c7fc3fed510 100644
--- a/keyboards/basekeys/slice/keymaps/default/keymap.c
+++ b/keyboards/basekeys/slice/keymaps/default/keymap.c
@@ -118,7 +118,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0;
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
@@ -142,5 +142,6 @@ void oled_task_user(void) {
} else {
oled_write(read_logo(), false);
}
+ return false;
}
#endif
diff --git a/keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c b/keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c
index 54d41cc382f..203bd0804c8 100644
--- a/keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c
+++ b/keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c
@@ -118,7 +118,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0;
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
@@ -142,5 +142,6 @@ void oled_task_user(void) {
} else {
oled_write(read_logo(), false);
}
+ return false;
}
#endif
diff --git a/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c b/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c
index 55d914cbc90..375daaca953 100644
--- a/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c
+++ b/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c
@@ -202,7 +202,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0;
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
@@ -232,5 +232,6 @@ void oled_task_user(void) {
} else {
oled_write(read_logo(), false);
}
+ return false;
}
#endif
diff --git a/keyboards/basekeys/slice/rev1_rgb/keymaps/via/keymap.c b/keyboards/basekeys/slice/rev1_rgb/keymaps/via/keymap.c
index d0893ae8622..fa5abd90a5d 100644
--- a/keyboards/basekeys/slice/rev1_rgb/keymaps/via/keymap.c
+++ b/keyboards/basekeys/slice/rev1_rgb/keymaps/via/keymap.c
@@ -99,7 +99,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0;
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
@@ -123,5 +123,6 @@ void oled_task_user(void) {
} else {
render_qmk_logo();
}
+ return false;
}
#endif
diff --git a/keyboards/basekeys/trifecta/config.h b/keyboards/basekeys/trifecta/config.h
index 28c9c18fb27..ffdf6d2d281 100644
--- a/keyboards/basekeys/trifecta/config.h
+++ b/keyboards/basekeys/trifecta/config.h
@@ -92,32 +92,53 @@
/* Disable the animations you don't want/need. You will need to disable a good number of these *
* because they take up a lot of space. Disable until you can successfully compile your firmware. */
-// # define DISABLE_RGB_MATRIX_ALPHAS_MODS
-// # define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// # define DISABLE_RGB_MATRIX_BREATHING
-// # define DISABLE_RGB_MATRIX_CYCLE_ALL
-// # define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-// # define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-// # define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-// # define DISABLE_RGB_MATRIX_DUAL_BEACON
-// # define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-// # define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// # define DISABLE_RGB_MATRIX_RAINDROPS
-// # define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define DISABLE_RGB_MATRIX_SPLASH
-// # define DISABLE_RGB_MATRIX_MULTISPLASH
-// # define DISABLE_RGB_MATRIX_SOLID_SPLASH
-// # define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+// 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
diff --git a/keyboards/basekeys/trifecta/rules.mk b/keyboards/basekeys/trifecta/rules.mk
index df62bcfabde..6842277d2d6 100644
--- a/keyboards/basekeys/trifecta/rules.mk
+++ b/keyboards/basekeys/trifecta/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/basketweave/rules.mk b/keyboards/basketweave/rules.mk
index 37814622630..ce023436b4f 100644
--- a/keyboards/basketweave/rules.mk
+++ b/keyboards/basketweave/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = usbasploader
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/bastardkb/scylla/config.h b/keyboards/bastardkb/scylla/config.h
index d04dcb97fc2..d876b5d0186 100644
--- a/keyboards/bastardkb/scylla/config.h
+++ b/keyboards/bastardkb/scylla/config.h
@@ -54,4 +54,52 @@
# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
# define RGB_DISABLE_WHEN_USB_SUSPENDED
# define RGB_MATRIX_KEYPRESSES
+// 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
diff --git a/keyboards/bastardkb/scylla/rules.mk b/keyboards/bastardkb/scylla/rules.mk
index 014da5c3aa9..5d35ab22bae 100644
--- a/keyboards/bastardkb/scylla/rules.mk
+++ b/keyboards/bastardkb/scylla/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/bastardkb/skeletyl/config.h b/keyboards/bastardkb/skeletyl/config.h
index 33f3a501090..a7530a5e73e 100644
--- a/keyboards/bastardkb/skeletyl/config.h
+++ b/keyboards/bastardkb/skeletyl/config.h
@@ -52,4 +52,52 @@
# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
# define RGB_DISABLE_WHEN_USB_SUSPENDED
# define RGB_MATRIX_KEYPRESSES
+// 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
diff --git a/keyboards/bastardkb/skeletyl/rules.mk b/keyboards/bastardkb/skeletyl/rules.mk
index 31aec2232ef..f66d8f4494e 100644
--- a/keyboards/bastardkb/skeletyl/rules.mk
+++ b/keyboards/bastardkb/skeletyl/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/bastardkb/tbk/rules.mk b/keyboards/bastardkb/tbk/rules.mk
index 4b9b97c3e38..aeb183666e4 100644
--- a/keyboards/bastardkb/tbk/rules.mk
+++ b/keyboards/bastardkb/tbk/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/bastardkb/tbkmini/config.h b/keyboards/bastardkb/tbkmini/config.h
index a09dafe4882..b2308bc8ed6 100644
--- a/keyboards/bastardkb/tbkmini/config.h
+++ b/keyboards/bastardkb/tbkmini/config.h
@@ -55,4 +55,52 @@
# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
# define RGB_DISABLE_WHEN_USB_SUSPENDED
# define RGB_MATRIX_KEYPRESSES
+// 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
diff --git a/keyboards/bastardkb/tbkmini/rules.mk b/keyboards/bastardkb/tbkmini/rules.mk
index 009cb4bbc1c..5ea23a33a56 100644
--- a/keyboards/bastardkb/tbkmini/rules.mk
+++ b/keyboards/bastardkb/tbkmini/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/beatervan/rules.mk b/keyboards/beatervan/rules.mk
index 5e0249f4d12..f835a7c2d04 100644
--- a/keyboards/beatervan/rules.mk
+++ b/keyboards/beatervan/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/bemeier/bmek/rev1/rules.mk b/keyboards/bemeier/bmek/rev1/rules.mk
index c2c08206c75..9e6bcd76539 100755
--- a/keyboards/bemeier/bmek/rev1/rules.mk
+++ b/keyboards/bemeier/bmek/rev1/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
diff --git a/keyboards/bemeier/bmek/rev2/rules.mk b/keyboards/bemeier/bmek/rev2/rules.mk
index c2c08206c75..9e6bcd76539 100755
--- a/keyboards/bemeier/bmek/rev2/rules.mk
+++ b/keyboards/bemeier/bmek/rev2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
diff --git a/keyboards/bemeier/bmek/rev3/rules.mk b/keyboards/bemeier/bmek/rev3/rules.mk
index c2c08206c75..9e6bcd76539 100755
--- a/keyboards/bemeier/bmek/rev3/rules.mk
+++ b/keyboards/bemeier/bmek/rev3/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
diff --git a/keyboards/bfake/bfake.h b/keyboards/bfake/bfake.h
index 599ea0f870e..59a40de2f86 100644
--- a/keyboards/bfake/bfake.h
+++ b/keyboards/bfake/bfake.h
@@ -15,43 +15,42 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef BFAKE_H
-#define BFAKE_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT_all( \
- K61, K71, K72, K73, K74, K64, K65, K75, K76, K77, K78, K68, K66, K10, K60,\
- K11, K01, K02, K03, K04, K14, K15, K05, K06, K07, K08, K18, K16, K20, \
- K12, K21, K22, K23, K24, K34, K35, K25, K26, K27, K28, K38, K40, \
- K19, K13, K41, K42, K43, K44, K54, K55, K45, K46, K47, K58, K49, K50,\
- K09, K00, K39, K30, K59, K69, K57, K29\
-){ \
- { KC_NO, K01, K02, K03, K04, K05, K06, K07, K08, K09, K00}, \
- { KC_NO, K11, K12, K13, K14, K15, K16, KC_NO, K18, K19, K10}, \
- { KC_NO, K21, K22, K23, K24, K25, K26, K27, K28, K29, K20}, \
- { KC_NO, KC_NO, KC_NO, KC_NO, K34, K35, KC_NO, KC_NO, K38, K39, K30}, \
- { KC_NO, K41, K42, K43, K44, K45, K46, K47, KC_NO, K49, K40}, \
- { KC_NO, KC_NO, KC_NO, KC_NO, K54, K55, KC_NO, K57, K58, K59, K50}, \
- { KC_NO, K61, KC_NO, KC_NO, K64, K65, K66, KC_NO, K68, K69, K60}, \
- { KC_NO, K71, K72, K73, K74, K75, K76, K77, K78, KC_NO, KC_NO}, \
+ k61, k71, k72, k73, k74, k64, k65, k75, k76, k77, k78, k68, k66, k1A, k6A,\
+ k11, k01, k02, k03, k04, k14, k15, k05, k06, k07, k08, k18, k16, k2A, \
+ k12, k21, k22, k23, k24, k34, k35, k25, k26, k27, k28, k38, k4A, \
+ k19, k13, k41, k42, k43, k44, k54, k55, k45, k46, k47, k58, k49, k5A, \
+ k09, k0A, k39, k3A, k59, k69, k57, k29 \
+) { \
+ { XXX, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A }, \
+ { XXX, k11, k12, k13, k14, k15, k16, XXX, k18, k19, k1A }, \
+ { XXX, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A }, \
+ { XXX, XXX, XXX, XXX, k34, k35, XXX, XXX, k38, k39, k3A }, \
+ { XXX, k41, k42, k43, k44, k45, k46, k47, XXX, k49, k4A }, \
+ { XXX, XXX, XXX, XXX, k54, k55, XXX, k57, k58, k59, k5A }, \
+ { XXX, k61, XXX, XXX, k64, k65, k66, XXX, k68, k69, k6A }, \
+ { XXX, k71, k72, k73, k74, k75, k76, k77, k78, XXX, XXX } \
}
#define LAYOUT_60_ansi( \
- K61, K71, K72, K73, K74, K64, K65, K75, K76, K77, K78, K68, K66, K60,\
- K11, K01, K02, K03, K04, K14, K15, K05, K06, K07, K08, K18, K16, K20, \
- K12, K21, K22, K23, K24, K34, K35, K25, K26, K27, K28, K38, K40, \
- K19, K41, K42, K43, K44, K54, K55, K45, K46, K47, K58, K49, \
- K09, K00, K39, K30, K59, K69, K57, K29\
-){ \
- { KC_NO, K01, K02, K03, K04, K05, K06, K07, K08, K09, K00}, \
- { KC_NO, K11, K12, KC_NO, K14, K15, K16, KC_NO, K18, K19, KC_NO}, \
- { KC_NO, K21, K22, K23, K24, K25, K26, K27, K28, K29, K20}, \
- { KC_NO, KC_NO, KC_NO, KC_NO, K34, K35, KC_NO, KC_NO, K38, K39, K30}, \
- { KC_NO, K41, K42, K43, K44, K45, K46, K47, KC_NO, K49, K40}, \
- { KC_NO, KC_NO, KC_NO, KC_NO, K54, K55, KC_NO, K57, K58, K59, KC_NO}, \
- { KC_NO, K61, KC_NO, KC_NO, K64, K65, K66, KC_NO, K68, K69, K60}, \
- { KC_NO, K71, K72, K73, K74, K75, K76, K77, K78, KC_NO, KC_NO}, \
+ k61, k71, k72, k73, k74, k64, k65, k75, k76, k77, k78, k68, k66, k6A, \
+ k11, k01, k02, k03, k04, k14, k15, k05, k06, k07, k08, k18, k16, k2A, \
+ k12, k21, k22, k23, k24, k34, k35, k25, k26, k27, k28, k38, k4A, \
+ k19, k41, k42, k43, k44, k54, k55, k45, k46, k47, k58, k49, \
+ k09, k0A, k39, k3A, k59, k69, k57, k29 \
+) { \
+ { XXX, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A }, \
+ { XXX, k11, k12, XXX, k14, k15, k16, XXX, k18, k19, XXX }, \
+ { XXX, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A }, \
+ { XXX, XXX, XXX, XXX, k34, k35, XXX, XXX, k38, k39, k3A }, \
+ { XXX, k41, k42, k43, k44, k45, k46, k47, XXX, k49, k4A }, \
+ { XXX, XXX, XXX, XXX, k54, k55, XXX, k57, k58, k59, XXX }, \
+ { XXX, k61, XXX, XXX, k64, k65, k66, XXX, k68, k69, k6A }, \
+ { XXX, k71, k72, k73, k74, k75, k76, k77, k78, XXX, XXX } \
}
-
-#endif
diff --git a/keyboards/bfake/rules.mk b/keyboards/bfake/rules.mk
index 6f95a118f7d..5b70617255f 100644
--- a/keyboards/bfake/rules.mk
+++ b/keyboards/bfake/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32a
BOOTLOADER = bootloadhid
# build options
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
diff --git a/keyboards/bigseries/1key/1key.h b/keyboards/bigseries/1key/1key.h
index 34414077986..6e5ddcc7606 100755
--- a/keyboards/bigseries/1key/1key.h
+++ b/keyboards/bigseries/1key/1key.h
@@ -14,15 +14,13 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef BIGSWITCH_H
-#define BIGSWITCH_H
+
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00 \
+ k00 \
) { \
- { K00 } \
+ { k00 } \
}
-
-#endif
diff --git a/keyboards/bigseries/1key/config.h b/keyboards/bigseries/1key/config.h
index f26b242128f..f31a7fc0575 100755
--- a/keyboards/bigseries/1key/config.h
+++ b/keyboards/bigseries/1key/config.h
@@ -14,8 +14,8 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+
+#pragma once
#include "config_common.h"
@@ -55,5 +55,3 @@ along with this program. If not, see .
#endif
#define RGBLIGHT_LIMIT_VAL 128
#endif
-
-#endif
diff --git a/keyboards/bigseries/2key/2key.h b/keyboards/bigseries/2key/2key.h
index dcbf2f764c4..eff82fef936 100755
--- a/keyboards/bigseries/2key/2key.h
+++ b/keyboards/bigseries/2key/2key.h
@@ -14,15 +14,13 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef BIGSWITCH_H
-#define BIGSWITCH_H
+
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00, K01 \
+ k00, k01 \
) { \
- { K00, K01 } \
+ { k00, k01 } \
}
-
-#endif
diff --git a/keyboards/bigseries/2key/config.h b/keyboards/bigseries/2key/config.h
index 4f75e28470f..53866a15d1c 100755
--- a/keyboards/bigseries/2key/config.h
+++ b/keyboards/bigseries/2key/config.h
@@ -14,8 +14,8 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+
+#pragma once
#include "config_common.h"
@@ -55,5 +55,3 @@ along with this program. If not, see .
#endif
#define RGBLIGHT_LIMIT_VAL 128
#endif
-
-#endif
diff --git a/keyboards/bigseries/3key/3key.h b/keyboards/bigseries/3key/3key.h
index 6aa843c263f..caee1e45519 100755
--- a/keyboards/bigseries/3key/3key.h
+++ b/keyboards/bigseries/3key/3key.h
@@ -14,15 +14,13 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef BIGSWITCH_H
-#define BIGSWITCH_H
+
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00, K01, K02 \
+ k00, k01, k02 \
) { \
- { K00, K01, K02 } \
+ { k00, k01, k02 } \
}
-
-#endif
diff --git a/keyboards/bigseries/3key/config.h b/keyboards/bigseries/3key/config.h
index a4a36945428..4a474cc3d14 100755
--- a/keyboards/bigseries/3key/config.h
+++ b/keyboards/bigseries/3key/config.h
@@ -14,8 +14,8 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+
+#pragma once
#include "config_common.h"
@@ -55,5 +55,3 @@ along with this program. If not, see .
#endif
#define RGBLIGHT_LIMIT_VAL 128
#endif
-
-#endif
diff --git a/keyboards/bigseries/4key/4key.h b/keyboards/bigseries/4key/4key.h
index 21373fdeda4..7e9ff7a7935 100755
--- a/keyboards/bigseries/4key/4key.h
+++ b/keyboards/bigseries/4key/4key.h
@@ -14,17 +14,15 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef BIGSWITCH_H
-#define BIGSWITCH_H
+
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00, K01, \
- K10, K11 \
+ k00, k01, \
+ k10, k11 \
) { \
- { K00, K01 }, \
- { K10, K11 } \
+ { k00, k01 }, \
+ { k10, k11 } \
}
-
-#endif
diff --git a/keyboards/bigseries/4key/config.h b/keyboards/bigseries/4key/config.h
index 3e965357990..c1635022de2 100755
--- a/keyboards/bigseries/4key/config.h
+++ b/keyboards/bigseries/4key/config.h
@@ -14,8 +14,8 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+
+#pragma once
#include "config_common.h"
@@ -55,5 +55,3 @@ along with this program. If not, see .
#endif
#define RGBLIGHT_LIMIT_VAL 128
#endif
-
-#endif
diff --git a/keyboards/binepad/bn003/rules.mk b/keyboards/binepad/bn003/rules.mk
index 576d4ef5f27..10e9616d6fd 100644
--- a/keyboards/binepad/bn003/rules.mk
+++ b/keyboards/binepad/bn003/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/bioi/g60/rules.mk b/keyboards/bioi/g60/rules.mk
index 5a524890ef0..43a65a3d368 100644
--- a/keyboards/bioi/g60/rules.mk
+++ b/keyboards/bioi/g60/rules.mk
@@ -18,7 +18,7 @@ OPT_DEFS += -DUSART1_ENABLED
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/bioi/g60ble/rules.mk b/keyboards/bioi/g60ble/rules.mk
index 6b17e337a10..58cfbb46ada 100644
--- a/keyboards/bioi/g60ble/rules.mk
+++ b/keyboards/bioi/g60ble/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/bioi/morgan65/rules.mk b/keyboards/bioi/morgan65/rules.mk
index 5a524890ef0..43a65a3d368 100644
--- a/keyboards/bioi/morgan65/rules.mk
+++ b/keyboards/bioi/morgan65/rules.mk
@@ -18,7 +18,7 @@ OPT_DEFS += -DUSART1_ENABLED
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/bioi/s65/rules.mk b/keyboards/bioi/s65/rules.mk
index 0c4c1929fa6..9c35a83c205 100644
--- a/keyboards/bioi/s65/rules.mk
+++ b/keyboards/bioi/s65/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/blackplum/rules.mk b/keyboards/blackplum/rules.mk
index b969665f4e8..49822a44ea1 100644
--- a/keyboards/blackplum/rules.mk
+++ b/keyboards/blackplum/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/blockey/blockey.h b/keyboards/blockey/blockey.h
index fa7624be76e..7b007a2e978 100644
--- a/keyboards/blockey/blockey.h
+++ b/keyboards/blockey/blockey.h
@@ -13,8 +13,8 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef BLOCKEY_H
-#define BLOCKEY_H
+
+#pragma once
#include "quantum.h"
@@ -26,23 +26,20 @@
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, k14, \
- k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, \
- k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, \
- k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, \
- k55, k56, k57, k58, k59, k60, k61, k62 \
-) \
-{ \
- { k01, k02, k03, k04, k05, k06, k07 }, \
- { k15, k16, k17, k18, k19, k20, k21 }, \
- { k29, k30, k31, k32, k33, k34, k35 }, \
- { k42, k43, k44, k45, k46, k47, k48 }, \
- { k55, k56, k57, k58, XXX, XXX, k59 }, \
- { k08, k09, k10, k11, k12, k13, k14 }, \
- { k22, k23, k24, k25, k26, k27, k28 }, \
- { k36, k37, k38, k39, k40, k41, XXX }, \
- { k49, k50, k51, k52, k53, k54, XXX }, \
- { XXX, XXX, XXX, k60, k61, k62, XXX }, \
+ k00, k01, k02, k03, k04, k05, k06, k50, k51, k52, k53, k54, k55, k56, \
+ k10, k11, k12, k13, k14, k15, k16, k60, k61, k62, k63, k64, k65, k66, \
+ k20, k21, k22, k23, k24, k25, k26, k70, k71, k72, k73, k74, k75, \
+ k30, k31, k32, k33, k34, k35, k36, k80, k81, k82, k83, k84, k85, \
+ k40, k41, k42, k43, k46, k93, k94, k95 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06 }, \
+ { k10, k11, k12, k13, k14, k15, k16 }, \
+ { k20, k21, k22, k23, k24, k25, k26 }, \
+ { k30, k31, k32, k33, k34, k35, k36 }, \
+ { k40, k41, k42, k43, XXX, XXX, k46 }, \
+ { k50, k51, k52, k53, k54, k55, k56 }, \
+ { k60, k61, k62, k63, k64, k65, k66 }, \
+ { k70, k71, k72, k73, k74, k75, XXX }, \
+ { k80, k81, k82, k83, k84, k85, XXX }, \
+ { XXX, XXX, XXX, k93, k94, k95, XXX } \
}
-
-#endif
diff --git a/keyboards/blockey/config.h b/keyboards/blockey/config.h
index 61a7b96c241..7ad3311c71f 100644
--- a/keyboards/blockey/config.h
+++ b/keyboards/blockey/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -113,5 +112,3 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/boardrun/bizarre/rules.mk b/keyboards/boardrun/bizarre/rules.mk
index 8d08446ee2b..0acd19e6706 100644
--- a/keyboards/boardrun/bizarre/rules.mk
+++ b/keyboards/boardrun/bizarre/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/boardrun/classic/rules.mk b/keyboards/boardrun/classic/rules.mk
index a3b924ec2e5..a488e3dc0b0 100644
--- a/keyboards/boardrun/classic/rules.mk
+++ b/keyboards/boardrun/classic/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/boardsource/3x4/rules.mk b/keyboards/boardsource/3x4/rules.mk
index 85062d0b623..b4c8b293e00 100644
--- a/keyboards/boardsource/3x4/rules.mk
+++ b/keyboards/boardsource/3x4/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/boardsource/4x12/rules.mk b/keyboards/boardsource/4x12/rules.mk
index b6805a6865c..d505368b0bb 100644
--- a/keyboards/boardsource/4x12/rules.mk
+++ b/keyboards/boardsource/4x12/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/boardsource/5x12/rules.mk b/keyboards/boardsource/5x12/rules.mk
index 9e7ed55695f..ba1884fa8a4 100644
--- a/keyboards/boardsource/5x12/rules.mk
+++ b/keyboards/boardsource/5x12/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/boardsource/beiwagon/config.h b/keyboards/boardsource/beiwagon/config.h
index 93856cbb87a..eb30e5535c6 100644
--- a/keyboards/boardsource/beiwagon/config.h
+++ b/keyboards/boardsource/beiwagon/config.h
@@ -20,7 +20,7 @@ along with this program. If not, see .
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4273
+#define VENDOR_ID 0x4273
#define PRODUCT_ID 0x0066
#define DEVICE_VER 0x0001
#define MANUFACTURER Boardsource
@@ -53,6 +53,54 @@ along with this program. If not, see .
#define RGBLIGHT_ANIMATIONS
#define RGB_DI_PIN C6
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
+// 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
#ifdef RGBLIGHT_ENABLE
#define RGBLED_NUM 6 // Number of LEDs
#endif
diff --git a/keyboards/boardsource/beiwagon/rules.mk b/keyboards/boardsource/beiwagon/rules.mk
index 7c2e7fd5e1c..575227a36ea 100644
--- a/keyboards/boardsource/beiwagon/rules.mk
+++ b/keyboards/boardsource/beiwagon/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c b/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c
index a9065fdfa2f..eb56d117355 100644
--- a/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c
+++ b/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c
@@ -71,8 +71,9 @@ static void render_RIP(void) {
oled_write_raw_P(my_logo, sizeof(my_logo));
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
render_RIP();
+ return false;
}
#endif
diff --git a/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c b/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c
index c50e0b4b3fe..f8cac508751 100644
--- a/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c
+++ b/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c
@@ -71,8 +71,9 @@ static void render_RIP(void) {
oled_write_raw_P(my_logo, sizeof(my_logo));
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
render_RIP();
+ return false;
}
#endif
diff --git a/keyboards/boardsource/holiday/spooky/rules.mk b/keyboards/boardsource/holiday/spooky/rules.mk
index f8504aca7dc..509ede75adb 100644
--- a/keyboards/boardsource/holiday/spooky/rules.mk
+++ b/keyboards/boardsource/holiday/spooky/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/boardsource/microdox/keymaps/cole/keymap.c b/keyboards/boardsource/microdox/keymaps/cole/keymap.c
index 8ea96e8f917..8ff57074787 100644
--- a/keyboards/boardsource/microdox/keymaps/cole/keymap.c
+++ b/keyboards/boardsource/microdox/keymaps/cole/keymap.c
@@ -104,13 +104,14 @@ static void render_status(void) {
}
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
render_status();
} else {
render_logo();
oled_scroll_left();
}
+ return false;
}
#endif
diff --git a/keyboards/boardsource/microdox/keymaps/via/keymap.c b/keyboards/boardsource/microdox/keymaps/via/keymap.c
index 96e0a024f01..e02fb0b6eeb 100644
--- a/keyboards/boardsource/microdox/keymaps/via/keymap.c
+++ b/keyboards/boardsource/microdox/keymaps/via/keymap.c
@@ -92,13 +92,14 @@ static void render_status(void) {
}
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
render_status();
} else {
render_logo();
oled_scroll_left();
}
+ return false;
}
#endif
diff --git a/keyboards/boardsource/technik_o/config.h b/keyboards/boardsource/technik_o/config.h
index 0333ce1801b..3b9bf202178 100644
--- a/keyboards/boardsource/technik_o/config.h
+++ b/keyboards/boardsource/technik_o/config.h
@@ -20,7 +20,7 @@ along with this program. If not, see .
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4273
+#define VENDOR_ID 0x4273
#define PRODUCT_ID 0x0079
#define DEVICE_VER 0x0001
#define MANUFACTURER Boardsource
@@ -53,8 +53,56 @@ along with this program. If not, see .
#define RGBLIGHT_ANIMATIONS
#define RGB_DI_PIN C6
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
+// 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
#ifdef RGBLIGHT_ENABLE
-#define RGBLED_NUM 10 // Number of LEDs
+# define RGBLED_NUM 10 // Number of LEDs
#endif
#define DRIVER_LED_TOTAL 58
diff --git a/keyboards/boardsource/technik_o/rules.mk b/keyboards/boardsource/technik_o/rules.mk
index b94ba1785b7..ced26ad699e 100644
--- a/keyboards/boardsource/technik_o/rules.mk
+++ b/keyboards/boardsource/technik_o/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/boardsource/technik_s/config.h b/keyboards/boardsource/technik_s/config.h
index 97dec63efb6..4f665330a3c 100644
--- a/keyboards/boardsource/technik_s/config.h
+++ b/keyboards/boardsource/technik_s/config.h
@@ -20,7 +20,7 @@ along with this program. If not, see .
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4273
+#define VENDOR_ID 0x4273
#define PRODUCT_ID 0x0083
#define DEVICE_VER 0x0001
#define MANUFACTURER Boardsource
@@ -53,8 +53,56 @@ along with this program. If not, see .
#define RGBLIGHT_ANIMATIONS
#define RGB_DI_PIN C6
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
+// 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
#ifdef RGBLIGHT_ENABLE
-#define RGBLED_NUM 10 // Number of LEDs
+# define RGBLED_NUM 10 // Number of LEDs
#endif
#define DRIVER_LED_TOTAL 55
diff --git a/keyboards/boardsource/technik_s/rules.mk b/keyboards/boardsource/technik_s/rules.mk
index 87612969d0a..efc63b4d56e 100644
--- a/keyboards/boardsource/technik_s/rules.mk
+++ b/keyboards/boardsource/technik_s/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/boardsource/the_mark/rules.mk b/keyboards/boardsource/the_mark/rules.mk
index 85b0c328de4..e968cf4fa59 100644
--- a/keyboards/boardsource/the_mark/rules.mk
+++ b/keyboards/boardsource/the_mark/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/boardwalk/keymaps/niclake/rules.mk b/keyboards/boardwalk/keymaps/niclake/rules.mk
index 0b4dadb10ef..31d6053e03d 100644
--- a/keyboards/boardwalk/keymaps/niclake/rules.mk
+++ b/keyboards/boardwalk/keymaps/niclake/rules.mk
@@ -1,3 +1,3 @@
COMMAND_ENABLE = no
RGBLIGHT_ENABLE = yes
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
diff --git a/keyboards/bobpad/rules.mk b/keyboards/bobpad/rules.mk
index 31a2d9df52b..d841c10cc1a 100644
--- a/keyboards/bobpad/rules.mk
+++ b/keyboards/bobpad/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/bop/rules.mk b/keyboards/bop/rules.mk
index c4e8c59e42f..d3ce654f129 100644
--- a/keyboards/bop/rules.mk
+++ b/keyboards/bop/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/boston/rules.mk b/keyboards/boston/rules.mk
index 8792a0276f3..4ad4ec58d03 100644
--- a/keyboards/boston/rules.mk
+++ b/keyboards/boston/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/boston_meetup/2019/2019.c b/keyboards/boston_meetup/2019/2019.c
index fd283b087ab..e558048f6a5 100644
--- a/keyboards/boston_meetup/2019/2019.c
+++ b/keyboards/boston_meetup/2019/2019.c
@@ -14,9 +14,6 @@
* along with this program. If not, see .
*/
#include "2019.h"
-#include "qwiic.h"
-#include "action_layer.h"
-#include "haptic.h"
#ifdef RGB_MATRIX_ENABLE
#include "rgb_matrix.h"
@@ -33,184 +30,69 @@ led_config_t g_led_config = { {
} };
#endif
-uint8_t *o_fb;
+#ifdef OLED_ENABLE
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_180; }
-uint16_t counterst = 0;
-
-
-
-#ifdef QWIIC_MICRO_OLED_ENABLE
-
-/* screen off after this many milliseconds */
-#include "timer.h"
-#define ScreenOffInterval 60000 /* milliseconds */
-static uint16_t last_flush;
-
-volatile uint8_t led_numlock = false;
-volatile uint8_t led_capslock = false;
-volatile uint8_t led_scrolllock = false;
-
-static uint8_t layer;
-static bool queue_for_send = false;
-static uint8_t encoder_value = 32;
-
-__attribute__ ((weak))
-void draw_ui(void) {
- clear_buffer();
- last_flush = timer_read();
- send_command(DISPLAYON);
-
-/* Boston MK title is 55 x 10 pixels */
-#define NAME_X 0
-#define NAME_Y 0
-
- draw_string(NAME_X + 1, NAME_Y + 2, "BOSTON MK", PIXEL_ON, NORM, 0);
-
-/* Layer indicator is 41 x 10 pixels */
-#define LAYER_INDICATOR_X 60
-#define LAYER_INDICATOR_Y 0
-
- draw_string(LAYER_INDICATOR_X + 1, LAYER_INDICATOR_Y + 2, "LAYER", PIXEL_ON, NORM, 0);
- draw_rect_filled_soft(LAYER_INDICATOR_X + 32, LAYER_INDICATOR_Y + 1, 9, 9, PIXEL_ON, NORM);
- draw_char(LAYER_INDICATOR_X + 34, LAYER_INDICATOR_Y + 2, layer + 0x30, PIXEL_ON, XOR, 0);
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+ oled_write_P(PSTR("BOSTON MK LAYER"), false);
+ oled_advance_char();
+ oled_write_char(get_highest_layer(layer_state) + 0x30, true);
+
+ led_t led_state = host_keyboard_led_state();
+ oled_set_cursor(18, 0);
+ oled_write_P(PSTR("NUM"), led_state.num_lock);
+ oled_set_cursor(18, 1);
+ oled_write_P(PSTR("CAP"), led_state.caps_lock);
+ oled_set_cursor(18, 2);
+ oled_write_P(PSTR("SCR"), led_state.scroll_lock);
+
+ uint8_t mod_state = get_mods();
+ oled_set_cursor(10, 3);
+ oled_write_P(PSTR("S"), mod_state & MOD_MASK_SHIFT);
+ oled_advance_char();
+ oled_write_P(PSTR("C"), mod_state & MOD_MASK_CTRL);
+ oled_advance_char();
+ oled_write_P(PSTR("A"), mod_state & MOD_MASK_ALT);
+ oled_advance_char();
+ oled_write_P(PSTR("G"), mod_state & MOD_MASK_GUI);
+ oled_advance_char();
/* Matrix display is 12 x 12 pixels */
#define MATRIX_DISPLAY_X 8
#define MATRIX_DISPLAY_Y 16
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- for (uint8_t y = 0; y < MATRIX_COLS; y++) {
- draw_pixel(MATRIX_DISPLAY_X + y + y + 2, MATRIX_DISPLAY_Y + x + x + 2,(matrix_get_row(x) & (1 << y)) > 0, NORM);
- draw_pixel(MATRIX_DISPLAY_X + y + y + 3, MATRIX_DISPLAY_Y + x + x + 2,(matrix_get_row(x) & (1 << y)) > 0, NORM);
- draw_pixel(MATRIX_DISPLAY_X + y + y + 2, MATRIX_DISPLAY_Y + x + x + 3,(matrix_get_row(x) & (1 << y)) > 0, NORM);
- draw_pixel(MATRIX_DISPLAY_X + y + y + 3, MATRIX_DISPLAY_Y + x + x + 3,(matrix_get_row(x) & (1 << y)) > 0, NORM);
-
- }
- }
- draw_rect_soft(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y, 12, 12, PIXEL_ON, NORM);
- /* hadron oled location on thumbnail */
- draw_rect_filled_soft(MATRIX_DISPLAY_X + 5, MATRIX_DISPLAY_Y + 2, 6, 2, PIXEL_ON, NORM);
-/*
- draw_rect_soft(0, 13, 64, 6, PIXEL_ON, NORM);
- draw_line_vert(encoder_value, 13, 6, PIXEL_ON, NORM);
-
-*/
-
-/* Mod display is 41 x 16 pixels */
-#define MOD_DISPLAY_X 60
-#define MOD_DISPLAY_Y 20
-
- uint8_t mods = get_mods();
- if (mods & MOD_LSFT) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 0, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 3, MOD_DISPLAY_Y + 2, "S", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 3, MOD_DISPLAY_Y + 2, "S", PIXEL_ON, NORM, 0);
- }
- if (mods & MOD_LCTL) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 10, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 13, MOD_DISPLAY_Y + 2, "C", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 13, MOD_DISPLAY_Y + 2, "C", PIXEL_ON, NORM, 0);
- }
- if (mods & MOD_LALT) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 20, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 23, MOD_DISPLAY_Y + 2, "A", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 23, MOD_DISPLAY_Y + 2, "A", PIXEL_ON, NORM, 0);
- }
- if (mods & MOD_LGUI) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 30, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 33, MOD_DISPLAY_Y + 2, "G", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 33, MOD_DISPLAY_Y + 2, "G", PIXEL_ON, NORM, 0);
- }
+ // matrix
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ for (uint8_t y = 0; y < MATRIX_COLS; y++) {
+ bool on = (matrix_get_row(x) & (1 << y)) > 0;
-/* Lock display is 23 x 32 */
-#define LOCK_DISPLAY_X 104
-#define LOCK_DISPLAY_Y 0
+ // force on for oled location
+ if((x == 0) && (y >= (MATRIX_COLS - 2))) on = 1;
- if (led_numlock == true) {
- draw_rect_filled_soft(LOCK_DISPLAY_X, LOCK_DISPLAY_Y, 5 + (3 * 6), 9, PIXEL_ON, NORM);
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 1, "NUM", PIXEL_OFF, NORM, 0);
- } else if (led_numlock == false) {
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 1, "NUM", PIXEL_ON, NORM, 0);
- }
- if (led_capslock == true) {
- draw_rect_filled_soft(LOCK_DISPLAY_X + 0, LOCK_DISPLAY_Y + 11, 5 + (3 * 6), 9, PIXEL_ON, NORM);
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 11 +1, "CAP", PIXEL_OFF, NORM, 0);
- } else if (led_capslock == false) {
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 11 +1, "CAP", PIXEL_ON, NORM, 0);
- }
-
- if (led_scrolllock == true) {
- draw_rect_filled_soft(LOCK_DISPLAY_X + 0, LOCK_DISPLAY_Y + 22, 5 + (3 * 6), 9, PIXEL_ON, NORM);
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 22 +1, "SCR", PIXEL_OFF, NORM, 0);
- } else if (led_scrolllock == false) {
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 22 +1, "SCR", PIXEL_ON, NORM, 0);
- }
- send_buffer();
-}
-
-void led_set_user(uint8_t usb_led) {
- if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
- if (led_numlock == false){led_numlock = true;}
- } else {
- if (led_numlock == true){led_numlock = false;}
+ oled_write_pixel(MATRIX_DISPLAY_X + y + y + 2, MATRIX_DISPLAY_Y + x + x + 2, on);
+ oled_write_pixel(MATRIX_DISPLAY_X + y + y + 3, MATRIX_DISPLAY_Y + x + x + 2, on);
+ oled_write_pixel(MATRIX_DISPLAY_X + y + y + 2, MATRIX_DISPLAY_Y + x + x + 3, on);
+ oled_write_pixel(MATRIX_DISPLAY_X + y + y + 3, MATRIX_DISPLAY_Y + x + x + 3, on);
+ }
}
- if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
- if (led_capslock == false){led_capslock = true;}
- } else {
- if (led_capslock == true){led_capslock = false;}
+
+ // outline
+ for (uint8_t x = 0; x < 12; x++) {
+ oled_write_pixel(MATRIX_DISPLAY_X + x, MATRIX_DISPLAY_Y, true);
+ oled_write_pixel(MATRIX_DISPLAY_X + x, MATRIX_DISPLAY_Y + 12, true);
}
- if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
- if (led_scrolllock == false){led_scrolllock = true;}
- } else {
- if (led_scrolllock == true){led_scrolllock = false;}
+ for (uint8_t y = 0; y < 12; y++) {
+ oled_write_pixel(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y+y, true);
+ oled_write_pixel(MATRIX_DISPLAY_X + 12, MATRIX_DISPLAY_Y+y, true);
}
-}
-
-uint32_t layer_state_set_kb(uint32_t state) {
- state = layer_state_set_user(state);
- layer = biton32(state);
- queue_for_send = true;
- return state;
-}
-
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- queue_for_send = true;
- return process_record_user(keycode, record);
-}
-bool encoder_update_kb(uint8_t index, bool clockwise) {
- encoder_value = (encoder_value + (clockwise ? 1 : -1)) % 64;
- queue_for_send = true;
- return true;
-}
-
-#endif
-
-void matrix_init_kb(void) {
- queue_for_send = true;
- matrix_init_user();
+ // bodge for layer number left hand side
+ for (uint8_t y = 0; y < 8; y++) {
+ oled_write_pixel(95, 0 + y, true);
+ }
+ return false;
}
-
-void matrix_scan_kb(void) {
-if (queue_for_send) {
-#ifdef QWIIC_MICRO_OLED_ENABLE
- draw_ui();
#endif
- queue_for_send = false;
- }
-#ifdef QWIIC_MICRO_OLED_ENABLE
- if (timer_elapsed(last_flush) > ScreenOffInterval) {
- send_command(DISPLAYOFF); /* 0xAE */
- }
-#endif
- if (counterst == 0) {
- //testPatternFB(o_fb);
- }
- counterst = (counterst + 1) % 1024;
- //rgblight_task();
- matrix_scan_user();
-}
diff --git a/keyboards/boston_meetup/2019/config.h b/keyboards/boston_meetup/2019/config.h
index a1f4fc456d0..80896242e07 100644
--- a/keyboards/boston_meetup/2019/config.h
+++ b/keyboards/boston_meetup/2019/config.h
@@ -46,16 +46,9 @@
#define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
#endif
-//configure qwiic micro_oled driver for the 128x32 oled
-#ifdef QWIIC_MICRO_OLED_ENABLE
+// configure oled driver for the 128x32 oled
+#define OLED_UPDATE_INTERVAL 33 // ~30fps
-#undef I2C_ADDRESS_SA0_1
-#define I2C_ADDRESS_SA0_1 0b0111100
-#define LCDWIDTH 128
-#define LCDHEIGHT 32
-#define micro_oled_rotate_180
-
-#endif
/*
* Keyboard Matrix Assignments
*
diff --git a/keyboards/boston_meetup/2019/keymaps/default/keymap.c b/keyboards/boston_meetup/2019/keymaps/default/keymap.c
index 6375599455d..666624b18c3 100644
--- a/keyboards/boston_meetup/2019/keymaps/default/keymap.c
+++ b/keyboards/boston_meetup/2019/keymaps/default/keymap.c
@@ -13,10 +13,8 @@ enum custom_layers {
};
enum custom_keycodes {
- BASE = SAFE_RANGE,
- LOWER,
+ LOWER = SAFE_RANGE,
RAISE,
- KC_DEMOMACRO
};
// Custom macros
@@ -27,7 +25,6 @@ enum custom_keycodes {
// Requires KC_TRNS/_______ for the trigger key in the destination layer
#define LT_MC(kc) LT(_MOUSECURSOR, kc) // L-ayer T-ap M-ouse C-ursor
#define LT_RAI(kc) LT(_RAISE, kc) // L-ayer T-ap to Raise
-#define DEMOMACRO KC_DEMOMACRO // Sample for macros
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -115,14 +112,6 @@ layer_state_t layer_state_set_user(layer_state_t state) {
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
- case KC_DEMOMACRO:
- if (record->event.pressed) {
- // when keycode KC_DEMOMACRO is pressed
- SEND_STRING("QMK is the best thing ever!");
- } else {
- // when keycode KC_DEMOMACRO is released
- }
- break;
case LOWER:
if (record->event.pressed) {
//not sure how to have keyboard check mode and set it to a variable, so my work around
diff --git a/keyboards/boston_meetup/2019/keymaps/readme.md b/keyboards/boston_meetup/2019/keymaps/readme.md
deleted file mode 100644
index c10a49f7d03..00000000000
--- a/keyboards/boston_meetup/2019/keymaps/readme.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# How to add your own keymap
-
-Folders can be named however you'd like (will be approved upon merging), or should follow the format with a preceding `_`:
-
- _[ISO 3166-1 alpha-2 code*]_[layout variant]_[layout name/author]
-
-\* See full list: https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements
-
-and contain the following files:
-
-* `keymap.c`
-* `readme.md` *recommended*
-* `config.h` *optional*, found automatically when compiling
-* `Makefile` *optional*, found automatically when compling
-
-When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format:
-
- * **folder_name** description
-
-# List of 2019 keymaps
-
-* **default** default 2019 macropad layout
\ No newline at end of file
diff --git a/keyboards/boston_meetup/2019/rules.mk b/keyboards/boston_meetup/2019/rules.mk
index 236f28c4e51..6468f47b7d9 100644
--- a/keyboards/boston_meetup/2019/rules.mk
+++ b/keyboards/boston_meetup/2019/rules.mk
@@ -8,19 +8,21 @@ BOOTLOADER = stm32-dfu
# Build Options
# comment out to disable the options.
#
-BACKLIGHT_ENABLE = no
-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
-#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
-AUDIO_ENABLE = yes
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = no
RGB_MATRIX_ENABLE = no
RGB_MATRIX_DRIVER = WS2812
-HAPTIC_ENABLE += DRV2605L
-QWIIC_ENABLE = yes
-QWIIC_DRIVERS += MICRO_OLED
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER = DRV2605L
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
diff --git a/keyboards/botanicalkeyboards/fm2u/rules.mk b/keyboards/botanicalkeyboards/fm2u/rules.mk
index 69ca4affef3..2f757667b0e 100644
--- a/keyboards/botanicalkeyboards/fm2u/rules.mk
+++ b/keyboards/botanicalkeyboards/fm2u/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/box75/rules.mk b/keyboards/box75/rules.mk
index 755125c797c..ee6c0dfca7d 100644
--- a/keyboards/box75/rules.mk
+++ b/keyboards/box75/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/bpiphany/frosty_flake/config.h b/keyboards/bpiphany/frosty_flake/config.h
index bcd34b022c1..1a337b111f0 100644
--- a/keyboards/bpiphany/frosty_flake/config.h
+++ b/keyboards/bpiphany/frosty_flake/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -94,5 +93,3 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/bpiphany/kitten_paw/config.h b/keyboards/bpiphany/kitten_paw/config.h
index 5aebe080eff..7dbf0276994 100644
--- a/keyboards/bpiphany/kitten_paw/config.h
+++ b/keyboards/bpiphany/kitten_paw/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -108,5 +107,3 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/bpiphany/kitten_paw/kitten_paw.h b/keyboards/bpiphany/kitten_paw/kitten_paw.h
index 38b2a943346..d4a9a166566 100644
--- a/keyboards/bpiphany/kitten_paw/kitten_paw.h
+++ b/keyboards/bpiphany/kitten_paw/kitten_paw.h
@@ -1,8 +1,9 @@
-#ifndef KITTEN_PAW_H
-#define KITTEN_PAW_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
@@ -26,41 +27,37 @@
*/
#define LAYOUT( \
- KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
- KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
- KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
- KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
- KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
- KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
-) \
-{ \
- {KC_NO, KB0, KC0, KD0,KC_NO, KF0, KG0,KC_NO,KC_NO,KC_NO, KK0, KL0,KC_NO,KC_NO, KO0,KC_NO, KQ0, KR0}, \
- { KA1, KB1,KC_NO, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1,KC_NO,KC_NO,KC_NO,KC_NO, KQ1,KC_NO}, \
- {KC_NO, KB2,KC_NO, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2,KC_NO, KN2,KC_NO, KP2, KQ2, KR2}, \
- {KC_NO, KB3,KC_NO, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3,KC_NO, KQ3, KR3}, \
- { KA4, KB4,KC_NO, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4,KC_NO,KC_NO, KO4,KC_NO, KQ4, KR4}, \
- { KA5,KC_NO, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5,KC_NO,KC_NO, KO5,KC_NO, KQ5, KR5}, \
- {KC_NO, KB6, KC6,KC_NO, KE6, KF6, KG6, KH6, KI6, KJ6, KK6, KL6,KC_NO,KC_NO, KO6,KC_NO, KQ6, KR6}, \
- { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7,KC_NO,KC_NO,KC_NO,KC_NO, KO7,KC_NO, KQ7, KR7} \
+ KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
+ KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
+ KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
+ KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
+ KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
+ KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
+) { \
+ { XXX, KB0, KC0, KD0, XXX, KF0, KG0, XXX, XXX, XXX, KK0, KL0, XXX, XXX, KO0, XXX, KQ0, KR0 }, \
+ { KA1, KB1, XXX, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1, XXX, XXX, XXX, XXX, KQ1, XXX }, \
+ { XXX, KB2, XXX, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, XXX, KN2, XXX, KP2, KQ2, KR2 }, \
+ { XXX, KB3, XXX, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, XXX, KQ3, KR3 }, \
+ { KA4, KB4, XXX, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, XXX, XXX, KO4, XXX, KQ4, KR4 }, \
+ { KA5, XXX, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, XXX, XXX, KO5, XXX, KQ5, KR5 }, \
+ { XXX, KB6, KC6, XXX, KE6, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, XXX, XXX, KO6, XXX, KQ6, KR6 }, \
+ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, XXX, XXX, XXX, XXX, KO7, XXX, KQ7, KR7 } \
}
#define LAYOUT_fullsize_ansi( \
- KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
- KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
- KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
- KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
- KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
- KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
-) \
-{ \
- {KC_NO, KB0, KC0, KD0,KC_NO, KF0, KG0,KC_NO,KC_NO,KC_NO, KK0, KL0,KC_NO,KC_NO, KO0,KC_NO, KQ0, KR0}, \
- { KA1, KB1,KC_NO, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1,KC_NO,KC_NO,KC_NO,KC_NO, KQ1,KC_NO}, \
- {KC_NO, KB2,KC_NO, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2,KC_NO, KN2,KC_NO, KP2, KQ2, KR2}, \
- {KC_NO, KB3,KC_NO, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3,KC_NO, KQ3, KR3}, \
- { KA4, KB4,KC_NO, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4,KC_NO,KC_NO, KO4,KC_NO, KQ4, KR4}, \
- { KA5,KC_NO, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5,KC_NO,KC_NO, KO5,KC_NO, KQ5, KR5}, \
- {KC_NO, KB6, KC6,KC_NO, KE6, KF6, KG6, KH6, KC_NO,KJ6, KK6, KL6,KC_NO,KC_NO, KO6,KC_NO, KQ6, KR6}, \
- { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7,KC_NO,KC_NO,KC_NO,KC_NO, KO7,KC_NO, KQ7, KR7} \
+ KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
+ KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
+ KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
+ KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
+ KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
+ KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
+) { \
+ { XXX, KB0, KC0, KD0, XXX, KF0, KG0, XXX, XXX, XXX, KK0, KL0, XXX, XXX, KO0, XXX, KQ0, KR0 }, \
+ { KA1, KB1, XXX, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1, XXX, XXX, XXX, XXX, KQ1, XXX }, \
+ { XXX, KB2, XXX, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, XXX, KN2, XXX, KP2, KQ2, KR2 }, \
+ { XXX, KB3, XXX, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, XXX, KQ3, KR3 }, \
+ { KA4, KB4, XXX, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, XXX, XXX, KO4, XXX, KQ4, KR4 }, \
+ { KA5, XXX, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, XXX, XXX, KO5, XXX, KQ5, KR5 }, \
+ { XXX, KB6, KC6, XXX, KE6, KF6, KG6, KH6, XXX, KJ6, KK6, KL6, XXX, XXX, KO6, XXX, KQ6, KR6 }, \
+ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, XXX, XXX, XXX, XXX, KO7, XXX, KQ7, KR7 } \
}
-
-#endif
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk
index 9af05bb3d95..737451b39ad 100644
--- a/keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk
+++ b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk
@@ -2,7 +2,7 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk
index fa42618f243..c1e6e9ed02f 100644
--- a/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk
+++ b/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk
@@ -2,7 +2,7 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk
index 250f7de7895..f23c2105a3b 100644
--- a/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk
+++ b/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk
@@ -2,7 +2,7 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
diff --git a/keyboards/bpiphany/pegasushoof/rules.mk b/keyboards/bpiphany/pegasushoof/rules.mk
index d4d5fcf460c..232de655c7a 100644
--- a/keyboards/bpiphany/pegasushoof/rules.mk
+++ b/keyboards/bpiphany/pegasushoof/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/bpiphany/sixshooter/sixshooter.h b/keyboards/bpiphany/sixshooter/sixshooter.h
index e8fc68f5c90..33ac9335e61 100644
--- a/keyboards/bpiphany/sixshooter/sixshooter.h
+++ b/keyboards/bpiphany/sixshooter/sixshooter.h
@@ -1,15 +1,13 @@
-#ifndef SIXSHOOTER_H
-#define SIXSHOOTER_H
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00, K01, K02, \
- K03, K04, K05 \
-) \
-{ \
- { K00, K01, K02 }, \
- { K03, K04, K05 } \
+ k00, k01, k02, \
+ k10, k11, k12 \
+) { \
+ { k00, k01, k02 }, \
+ { k10, k11, k12 } \
}
inline void sixshooter_led_0_on(void) { DDRB |= (1<<6); PORTB |= (1<<6); }
@@ -42,5 +40,3 @@ inline void sixshooter_led_all_off(void) {
sixshooter_led_4_off();
sixshooter_led_5_off();
}
-
-#endif
diff --git a/keyboards/bpiphany/tiger_lily/config.h b/keyboards/bpiphany/tiger_lily/config.h
index bedbd9ea742..54a1c2e7f4a 100644
--- a/keyboards/bpiphany/tiger_lily/config.h
+++ b/keyboards/bpiphany/tiger_lily/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -99,5 +98,3 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/bpiphany/tiger_lily/tiger_lily.h b/keyboards/bpiphany/tiger_lily/tiger_lily.h
index 65e4d91564a..b1a872e2159 100644
--- a/keyboards/bpiphany/tiger_lily/tiger_lily.h
+++ b/keyboards/bpiphany/tiger_lily/tiger_lily.h
@@ -1,8 +1,9 @@
-#ifndef TIGER_LILY_H
-#define TIGER_LILY_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
// The first section contains all of the arguements
@@ -27,45 +28,37 @@
`-------------------------------------------------------------------------' `--------------' `-------------------'
*/
#define LAYOUT( \
- KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
- KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
- KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
- KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
- KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
- KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/* A B C D E F G H I J K L M N O P Q R */ \
-/* 0 */ { KC_NO, KB0, KC0, KD0, KC_NO, KF0, KG0, KC_NO, KC_NO, KC_NO, KK0, KL0, KC_NO, KC_NO, KO0, KC_NO, KQ0, KR0 }, \
-/* 1 */ { KA1, KB1, KC_NO, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1, KC_NO, KC_NO, KC_NO, KC_NO, KQ1, KC_NO }, \
-/* 2 */ { KC_NO, KB2, KC_NO, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KC_NO, KN2, KC_NO, KP2, KQ2, KR2 }, \
-/* 3 */ { KC_NO, KB3, KC_NO, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, KC_NO, KQ3, KR3 }, \
-/* 4 */ { KA4, KB4, KC_NO, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KC_NO, KC_NO, KO4, KC_NO, KQ4, KR4 }, \
-/* 5 */ { KA5, KC_NO, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KC_NO, KC_NO, KO5, KC_NO, KQ5, KR5 }, \
-/* 6 */ { KC_NO, KB6, KC6, KC_NO, KE6, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, KC_NO, KC_NO, KO6, KC_NO, KQ6, KR6 }, \
-/* 7 */ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, KC_NO, KC_NO, KC_NO, KC_NO, KO7, KC_NO, KQ7, KR7 } \
+ KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
+ KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
+ KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
+ KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
+ KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
+ KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
+) { \
+ { XXX, KB0, KC0, KD0, XXX, KF0, KG0, XXX, XXX, XXX, KK0, KL0, XXX, XXX, KO0, XXX, KQ0, KR0 }, \
+ { KA1, KB1, XXX, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1, XXX, XXX, XXX, XXX, KQ1, XXX }, \
+ { XXX, KB2, XXX, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, XXX, KN2, XXX, KP2, KQ2, KR2 }, \
+ { XXX, KB3, XXX, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, XXX, KQ3, KR3 }, \
+ { KA4, KB4, XXX, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, XXX, XXX, KO4, XXX, KQ4, KR4 }, \
+ { KA5, XXX, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, XXX, XXX, KO5, XXX, KQ5, KR5 }, \
+ { XXX, KB6, KC6, XXX, KE6, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, XXX, XXX, KO6, XXX, KQ6, KR6 }, \
+ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, XXX, XXX, XXX, XXX, KO7, XXX, KQ7, KR7 } \
}
#define LAYOUT_fullsize_ansi( \
- KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
- KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
- KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
- KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
- KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
- KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/* A B C D E F G H I J K L M N O P Q R */ \
-/* 0 */ { KC_NO, KB0, KC0, KD0, KC_NO, KF0, KG0, KC_NO, KC_NO, KC_NO, KK0, KL0, KC_NO, KC_NO, KO0, KC_NO, KQ0, KR0 }, \
-/* 1 */ { KA1, KB1, KC_NO, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1, KC_NO, KC_NO, KC_NO, KC_NO, KQ1, KC_NO }, \
-/* 2 */ { KC_NO, KB2, KC_NO, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KC_NO, KN2, KC_NO, KP2, KQ2, KR2 }, \
-/* 3 */ { KC_NO, KB3, KC_NO, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, KC_NO, KQ3, KR3 }, \
-/* 4 */ { KA4, KB4, KC_NO, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KC_NO, KC_NO, KO4, KC_NO, KQ4, KR4 }, \
-/* 5 */ { KA5, KC_NO, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KC_NO, KC_NO, KO5, KC_NO, KQ5, KR5 }, \
-/* 6 */ { KC_NO, KB6, KC6, KC_NO, KE6, KF6, KG6, KH6, KC_NO, KJ6, KK6, KL6, KC_NO, KC_NO, KO6, KC_NO, KQ6, KR6 }, \
-/* 7 */ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, KC_NO, KC_NO, KC_NO, KC_NO, KO7, KC_NO, KQ7, KR7 } \
+ KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
+ KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
+ KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
+ KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
+ KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
+ KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
+) { \
+ { XXX, KB0, KC0, KD0, XXX, KF0, KG0, XXX, XXX, XXX, KK0, KL0, XXX, XXX, KO0, XXX, KQ0, KR0 }, \
+ { KA1, KB1, XXX, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1, XXX, XXX, XXX, XXX, KQ1, XXX }, \
+ { XXX, KB2, XXX, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, XXX, KN2, XXX, KP2, KQ2, KR2 }, \
+ { XXX, KB3, XXX, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, XXX, KQ3, KR3 }, \
+ { KA4, KB4, XXX, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, XXX, XXX, KO4, XXX, KQ4, KR4 }, \
+ { KA5, XXX, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, XXX, XXX, KO5, XXX, KQ5, KR5 }, \
+ { XXX, KB6, KC6, XXX, KE6, KF6, KG6, KH6, XXX, KJ6, KK6, KL6, XXX, XXX, KO6, XXX, KQ6, KR6 }, \
+ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, XXX, XXX, XXX, XXX, KO7, XXX, KQ7, KR7 } \
}
-
-#endif
diff --git a/keyboards/bpiphany/unloved_bastard/config.h b/keyboards/bpiphany/unloved_bastard/config.h
index ab8f178a9d1..a6589be4a1d 100644
--- a/keyboards/bpiphany/unloved_bastard/config.h
+++ b/keyboards/bpiphany/unloved_bastard/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -92,5 +91,3 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/bpiphany/unloved_bastard/rules.mk b/keyboards/bpiphany/unloved_bastard/rules.mk
index 0661b2e92a4..01b4a4a29ef 100644
--- a/keyboards/bpiphany/unloved_bastard/rules.mk
+++ b/keyboards/bpiphany/unloved_bastard/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/bpiphany/unloved_bastard/unloved_bastard.h b/keyboards/bpiphany/unloved_bastard/unloved_bastard.h
index d444fd0d8af..26fce8749a1 100644
--- a/keyboards/bpiphany/unloved_bastard/unloved_bastard.h
+++ b/keyboards/bpiphany/unloved_bastard/unloved_bastard.h
@@ -13,74 +13,65 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef UNLOVED_BASTARD_H
-#define UNLOVED_BASTARD_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT_all( \
- KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
- KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
- KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3, KQ4, KC5, KE5, \
- KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
- KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
- KP4, KN2, KN6, KQ6, KN0, KN3, KM0, KP1, KC0, KQ0, KR0 \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/* A B C D E F G H I J K L M N O P Q R */ \
-/* 0 */ { KC_NO, KC_NO, KC0, KC_NO, KC_NO, KF0, KC_NO, KC_NO, KC_NO, KJ0, KK0, KC_NO, KM0, KN0, KO0, KC_NO, KQ0, KR0 }, \
-/* 1 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, KC_NO, KO1, KP1, KC_NO, KC_NO }, \
-/* 2 */ { KC_NO, KB2, KC_NO, KC_NO, KC_NO, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KN2, KO2, KC_NO, KC_NO, KC_NO }, \
-/* 3 */ { KC_NO, KB3, KC_NO, KC_NO, KC_NO, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, KC_NO, KC_NO, KC_NO }, \
-/* 4 */ { KC_NO, KC_NO, KC4, KC_NO, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, KC_NO, KO4, KP4, KQ4, KR4 }, \
-/* 5 */ { KC_NO, KC_NO, KC5, KC_NO, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, KC_NO, KC_NO }, \
-/* 6 */ { KC_NO, KC_NO, KC6, KC_NO, KC_NO, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, KC_NO,KN6, KO6, KC_NO, KQ6, KC_NO }, \
-/* 7 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KM7, KN7, KC_NO, KP7, KC_NO, KC_NO } \
+ KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
+ KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
+ KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3, KQ4, KC5, KE5, \
+ KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
+ KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
+ KP4, KN2, KN6, KQ6, KN0, KN3, KM0, KP1, KC0, KQ0, KR0 \
+) { \
+ { XXX, XXX, KC0, XXX, XXX, KF0, XXX, XXX, XXX, KJ0, KK0, XXX, KM0, KN0, KO0, XXX, KQ0, KR0 }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, XXX, KO1, KP1, XXX, XXX }, \
+ { XXX, KB2, XXX, XXX, XXX, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KN2, KO2, XXX, XXX, XXX }, \
+ { XXX, KB3, XXX, XXX, XXX, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, XXX, XXX, XXX }, \
+ { XXX, XXX, KC4, XXX, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, XXX, KO4, KP4, KQ4, KR4 }, \
+ { XXX, XXX, KC5, XXX, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, XXX, XXX }, \
+ { XXX, XXX, KC6, XXX, XXX, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, XXX, KN6, KO6, XXX, KQ6, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KM7, KN7, XXX, KP7, XXX, XXX } \
}
#define LAYOUT_tkl_ansi( \
- KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
- KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
- KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3, KQ4, KC5, KE5, \
- KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
- KB2, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
- KP4, KN2, KN6, KQ6, KN0, KN3, KM0, KP1, KC0, KQ0, KR0 \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/* A B C D E F G H I J K L M N O P Q R */ \
-/* 0 */ { KC_NO, KC_NO, KC0, KC_NO, KC_NO, KF0, KC_NO, KC_NO, KC_NO, KJ0, KK0, KC_NO, KM0, KN0, KO0, KC_NO, KQ0, KR0 }, \
-/* 1 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, KC_NO, KO1, KP1, KC_NO, KC_NO }, \
-/* 2 */ { KC_NO, KB2, KC_NO, KC_NO, KC_NO, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KN2, KO2, KC_NO, KC_NO, KC_NO }, \
-/* 3 */ { KC_NO, KB3, KC_NO, KC_NO, KC_NO, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, KC_NO, KC_NO, KC_NO }, \
-/* 4 */ { KC_NO, KC_NO, KC4, KC_NO, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, KC_NO, KO4, KP4, KQ4, KR4 }, \
-/* 5 */ { KC_NO, KC_NO, KC5, KC_NO, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, KC_NO, KC_NO }, \
-/* 6 */ { KC_NO, KC_NO, KC6, KC_NO, KC_NO, KF6, KG6, KC_NO, KI6, KJ6, KK6, KL6, KC_NO,KN6, KO6, KC_NO, KQ6, KC_NO }, \
-/* 7 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KM7, KN7, KC_NO, KP7, KC_NO, KC_NO } \
+ KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
+ KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
+ KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3, KQ4, KC5, KE5, \
+ KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
+ KB2, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
+ KP4, KN2, KN6, KQ6, KN0, KN3, KM0, KP1, KC0, KQ0, KR0 \
+) { \
+ { XXX, XXX, KC0, XXX, XXX, KF0, XXX, XXX, XXX, KJ0, KK0, XXX, KM0, KN0, KO0, XXX, KQ0, KR0 }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, XXX, KO1, KP1, XXX, XXX }, \
+ { XXX, KB2, XXX, XXX, XXX, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KN2, KO2, XXX, XXX, XXX }, \
+ { XXX, KB3, XXX, XXX, XXX, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, XXX, XXX, XXX }, \
+ { XXX, XXX, KC4, XXX, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, XXX, KO4, KP4, KQ4, KR4 }, \
+ { XXX, XXX, KC5, XXX, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, XXX, XXX }, \
+ { XXX, XXX, KC6, XXX, XXX, KF6, KG6, XXX, KI6, KJ6, KK6, KL6, XXX, KN6, KO6, XXX, KQ6, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KM7, KN7, XXX, KP7, XXX, XXX } \
}
#define LAYOUT_tkl_iso( \
- KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
- KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
- KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KQ4, KC5, KE5, \
- KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO3, KO1, \
- KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
- KP4, KN2, KN6, KQ6, KN0, KN3, KM0, KP1, KC0, KQ0, KR0 \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/* A B C D E F G H I J K L M N O P Q R */ \
-/* 0 */ { KC_NO, KC_NO, KC0, KC_NO, KC_NO, KF0, KC_NO, KC_NO, KC_NO, KJ0, KK0, KC_NO, KM0, KN0, KO0, KC_NO, KQ0, KR0 }, \
-/* 1 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, KC_NO, KO1, KP1, KC_NO, KC_NO }, \
-/* 2 */ { KC_NO, KB2, KC_NO, KC_NO, KC_NO, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KN2, KO2, KC_NO, KC_NO, KC_NO }, \
-/* 3 */ { KC_NO, KB3, KC_NO, KC_NO, KC_NO, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, KC_NO, KC_NO, KC_NO }, \
-/* 4 */ { KC_NO, KC_NO, KC4, KC_NO, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, KC_NO, KO4, KP4, KQ4, KR4 }, \
-/* 5 */ { KC_NO, KC_NO, KC5, KC_NO, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, KC_NO, KC_NO }, \
-/* 6 */ { KC_NO, KC_NO, KC6, KC_NO, KC_NO, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, KC_NO,KN6, KO6, KC_NO, KQ6, KC_NO }, \
-/* 7 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KM7, KN7, KC_NO, KP7, KC_NO, KC_NO } \
+ KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
+ KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
+ KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KQ4, KC5, KE5, \
+ KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO3, KO1, \
+ KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
+ KP4, KN2, KN6, KQ6, KN0, KN3, KM0, KP1, KC0, KQ0, KR0 \
+) { \
+ { XXX, XXX, KC0, XXX, XXX, KF0, XXX, XXX, XXX, KJ0, KK0, XXX, KM0, KN0, KO0, XXX, KQ0, KR0 }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, XXX, KO1, KP1, XXX, XXX }, \
+ { XXX, KB2, XXX, XXX, XXX, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KN2, KO2, XXX, XXX, XXX }, \
+ { XXX, KB3, XXX, XXX, XXX, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, XXX, XXX, XXX }, \
+ { XXX, XXX, KC4, XXX, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, XXX, KO4, KP4, KQ4, KR4 }, \
+ { XXX, XXX, KC5, XXX, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, XXX, XXX }, \
+ { XXX, XXX, KC6, XXX, XXX, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, XXX, KN6, KO6, XXX, KQ6, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KM7, KN7, XXX, KP7, XXX, XXX } \
}
#define LAYOUT LAYOUT_all
-
-#endif
diff --git a/keyboards/bthlabs/geekpad/geekpad.h b/keyboards/bthlabs/geekpad/geekpad.h
index c9f1ac9d4f6..4dc6800fe59 100644
--- a/keyboards/bthlabs/geekpad/geekpad.h
+++ b/keyboards/bthlabs/geekpad/geekpad.h
@@ -13,8 +13,8 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef GEEKPAD_H
-#define GEEKPAD_H
+
+#pragma once
#include "quantum.h"
@@ -27,14 +27,11 @@
* represents the switch matrix.
*/
#define LAYOUT( \
- K00, K01, K02, \
- K10, K11, K12, \
- K20, K21, K22 \
-) \
-{ \
- { K00, K01, K02 }, \
- { K10, K11, K12 }, \
- { K20, K21, K22 } \
+ k00, k01, k02, \
+ k10, k11, k12, \
+ k20, k21, k22 \
+) { \
+ { k00, k01, k02 }, \
+ { k10, k11, k12 }, \
+ { k20, k21, k22 } \
}
-
-#endif
diff --git a/keyboards/buildakb/potato65/rules.mk b/keyboards/buildakb/potato65/rules.mk
index 8e14e68d509..e026d1645f3 100644
--- a/keyboards/buildakb/potato65/rules.mk
+++ b/keyboards/buildakb/potato65/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/buildakb/potato65hs/rules.mk b/keyboards/buildakb/potato65hs/rules.mk
index 5150f2f7184..7d7f1ff4240 100644
--- a/keyboards/buildakb/potato65hs/rules.mk
+++ b/keyboards/buildakb/potato65hs/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/business_card/alpha/keymaps/default/keymap.c b/keyboards/business_card/alpha/keymaps/default/keymap.c
index 6bf201655db..64070d23d28 100644
--- a/keyboards/business_card/alpha/keymaps/default/keymap.c
+++ b/keyboards/business_card/alpha/keymaps/default/keymap.c
@@ -39,5 +39,8 @@ static void render_logo(void) {
oled_write_P(qmk_logo, false);
}
-void oled_task_user(void) { render_logo(); }
+bool oled_task_user(void) {
+ render_logo();
+ return false;
+}
#endif
diff --git a/keyboards/business_card/beta/keymaps/default/keymap.c b/keyboards/business_card/beta/keymaps/default/keymap.c
index beff48d9847..8d2413477eb 100644
--- a/keyboards/business_card/beta/keymaps/default/keymap.c
+++ b/keyboards/business_card/beta/keymaps/default/keymap.c
@@ -38,5 +38,8 @@ static void render_logo(void) {
oled_write_P(qmk_logo, false);
}
-void oled_task_user(void) { render_logo(); }
+bool oled_task_user(void) {
+ render_logo();
+ return false;
+}
#endif
diff --git a/keyboards/c39/keymaps/drashna/rules.mk b/keyboards/c39/keymaps/drashna/rules.mk
index c05f6a4be4d..a6575bbd93b 100644
--- a/keyboards/c39/keymaps/drashna/rules.mk
+++ b/keyboards/c39/keymaps/drashna/rules.mk
@@ -5,7 +5,7 @@ BOARD = QMK_PROTON_C
# Bootloader selection
BOOTLOADER = stm32-dfu
-BOOTMAGIC_ENABLE = yes
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
@@ -13,6 +13,7 @@ COMMAND_ENABLE = yes
NKRO_ENABLE = yes
AUDIO_ENABLE = yes
UNICODE_ENABLE = yes
-HAPTIC_ENABLE = SOLENOID
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER = SOLENOID
RGBLIGHT_STARTUP_ANIMATION = yes
diff --git a/keyboards/caffeinated/serpent65/rules.mk b/keyboards/caffeinated/serpent65/rules.mk
index 1209331901e..22f971288e2 100644
--- a/keyboards/caffeinated/serpent65/rules.mk
+++ b/keyboards/caffeinated/serpent65/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/canary/canary60rgb/canary60rgb.c b/keyboards/canary/canary60rgb/canary60rgb.c
index b01af5f294c..b37a88b32f0 100644
--- a/keyboards/canary/canary60rgb/canary60rgb.c
+++ b/keyboards/canary/canary60rgb/canary60rgb.c
@@ -16,7 +16,7 @@
#include "canary60rgb.h"
#ifdef RGB_MATRIX_ENABLE
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
{ 0, J_14, K_14, L_14 },
{ 0, J_13, K_13, L_13 },
{ 0, J_12, K_12, L_12 },
diff --git a/keyboards/cannonkeys/aella/rules.mk b/keyboards/cannonkeys/aella/rules.mk
index e5bf1ef8812..e3c94c282c1 100644
--- a/keyboards/cannonkeys/aella/rules.mk
+++ b/keyboards/cannonkeys/aella/rules.mk
@@ -10,7 +10,7 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/an_c/rules.mk b/keyboards/cannonkeys/an_c/rules.mk
index 66e6b65776c..1c8a0a4e142 100644
--- a/keyboards/cannonkeys/an_c/rules.mk
+++ b/keyboards/cannonkeys/an_c/rules.mk
@@ -12,7 +12,7 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/atlas/rules.mk b/keyboards/cannonkeys/atlas/rules.mk
index ee32cf30bdd..a2519aa0356 100644
--- a/keyboards/cannonkeys/atlas/rules.mk
+++ b/keyboards/cannonkeys/atlas/rules.mk
@@ -6,7 +6,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# comment out to disable the options.
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/atlas_alps/rules.mk b/keyboards/cannonkeys/atlas_alps/rules.mk
index 375db3aede0..f9a0f9be2f3 100644
--- a/keyboards/cannonkeys/atlas_alps/rules.mk
+++ b/keyboards/cannonkeys/atlas_alps/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/cannonkeys/balance/rules.mk b/keyboards/cannonkeys/balance/rules.mk
index 2cd1e23fa94..6f2ef2794ef 100644
--- a/keyboards/cannonkeys/balance/rules.mk
+++ b/keyboards/cannonkeys/balance/rules.mk
@@ -10,7 +10,7 @@ DFU_SUFFIX_ARGS = -p FFFF -v FFFF
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/chimera65/rules.mk b/keyboards/cannonkeys/chimera65/rules.mk
index 9c680a29b02..a1d2c6675f9 100644
--- a/keyboards/cannonkeys/chimera65/rules.mk
+++ b/keyboards/cannonkeys/chimera65/rules.mk
@@ -9,7 +9,7 @@ BOOTLOADER = stm32-dfu
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/db60/rules.mk b/keyboards/cannonkeys/db60/rules.mk
index be4c05831bd..43e9d6c9983 100644
--- a/keyboards/cannonkeys/db60/rules.mk
+++ b/keyboards/cannonkeys/db60/rules.mk
@@ -10,7 +10,7 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/devastatingtkl/rules.mk b/keyboards/cannonkeys/devastatingtkl/rules.mk
index 1a11e0a892d..8c80d472c0b 100644
--- a/keyboards/cannonkeys/devastatingtkl/rules.mk
+++ b/keyboards/cannonkeys/devastatingtkl/rules.mk
@@ -10,7 +10,7 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/instant60/rules.mk b/keyboards/cannonkeys/instant60/rules.mk
index e483bb0722d..8c2b499dfd8 100644
--- a/keyboards/cannonkeys/instant60/rules.mk
+++ b/keyboards/cannonkeys/instant60/rules.mk
@@ -11,7 +11,7 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/instant65/rules.mk b/keyboards/cannonkeys/instant65/rules.mk
index aa0b3116a9f..1f61cca45f2 100644
--- a/keyboards/cannonkeys/instant65/rules.mk
+++ b/keyboards/cannonkeys/instant65/rules.mk
@@ -10,7 +10,7 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/iron165/rules.mk b/keyboards/cannonkeys/iron165/rules.mk
index 641a6c14dae..e159c6ae822 100644
--- a/keyboards/cannonkeys/iron165/rules.mk
+++ b/keyboards/cannonkeys/iron165/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/obliterated75/rules.mk b/keyboards/cannonkeys/obliterated75/rules.mk
index 60b6bc58dee..0f8ad7cadc0 100644
--- a/keyboards/cannonkeys/obliterated75/rules.mk
+++ b/keyboards/cannonkeys/obliterated75/rules.mk
@@ -10,7 +10,7 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/onyx/rules.mk b/keyboards/cannonkeys/onyx/rules.mk
index 26b4fab43ea..cfa8daced47 100644
--- a/keyboards/cannonkeys/onyx/rules.mk
+++ b/keyboards/cannonkeys/onyx/rules.mk
@@ -10,7 +10,7 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/rekt1800/rules.mk b/keyboards/cannonkeys/rekt1800/rules.mk
index 962b9dcf404..928e8d51716 100644
--- a/keyboards/cannonkeys/rekt1800/rules.mk
+++ b/keyboards/cannonkeys/rekt1800/rules.mk
@@ -10,7 +10,7 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/sagittarius/rules.mk b/keyboards/cannonkeys/sagittarius/rules.mk
index 4abdb98945d..2aed2c9a1ab 100644
--- a/keyboards/cannonkeys/sagittarius/rules.mk
+++ b/keyboards/cannonkeys/sagittarius/rules.mk
@@ -10,7 +10,7 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/satisfaction75/config.h b/keyboards/cannonkeys/satisfaction75/config.h
index e100cc99b1e..53e4c18e5ec 100644
--- a/keyboards/cannonkeys/satisfaction75/config.h
+++ b/keyboards/cannonkeys/satisfaction75/config.h
@@ -53,9 +53,8 @@ along with this program. If not, see .
// I2C config
#define I2C_DRIVER I2CD1
-#define I2C1_SCL_BANK GPIOB
-#define I2C1_SCL 6
-#define I2C1_SDA 7
+#define I2C1_SCL_PIN B6
+#define I2C1_SDA_PIN B7
#define I2C1_SCL_PAL_MODE 1
#define I2C1_SDA_PAL_MODE 1
#define I2C1_TIMINGR_PRESC 0x00U
@@ -72,14 +71,14 @@ along with this program. If not, see .
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#ifdef QWIIC_MICRO_OLED_ENABLE
+// configure oled driver for the 128x32 oled
+#define OLED_UPDATE_INTERVAL 66 // ~15fps
-#undef I2C_ADDRESS_SA0_1
-#define I2C_ADDRESS_SA0_1 0b0111100
-#define LCDWIDTH 128
-#define LCDHEIGHT 32
+// OLED_TIMEOUT is incompatible with the OLED_OFF mode
+#define OLED_TIMEOUT 0
-#endif
+// OLED timeout reimplemented in the keyboard-specific code
+#define CUSTOM_OLED_TIMEOUT 60000
// Custom config starts after VIA's EEPROM usage,
// dynamic keymaps start after this.
diff --git a/keyboards/cannonkeys/satisfaction75/rules.mk b/keyboards/cannonkeys/satisfaction75/rules.mk
index 3f0f8cda7c9..b74a4b35cdf 100644
--- a/keyboards/cannonkeys/satisfaction75/rules.mk
+++ b/keyboards/cannonkeys/satisfaction75/rules.mk
@@ -16,17 +16,16 @@ SRC += led.c \
satisfaction_encoder.c \
satisfaction_oled.c
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
ENCODER_ENABLE = yes
-QWIIC_ENABLE = yes
-QWIIC_DRIVERS += MICRO_OLED
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
#BACKLIGHT_ENABLE = yes
DEFAULT_FOLDER = cannonkeys/satisfaction75/rev1
diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction75.c b/keyboards/cannonkeys/satisfaction75/satisfaction75.c
index 682805f3217..bd7eaf18858 100644
--- a/keyboards/cannonkeys/satisfaction75/satisfaction75.c
+++ b/keyboards/cannonkeys/satisfaction75/satisfaction75.c
@@ -5,33 +5,27 @@
#include
#include
-#ifdef QWIIC_MICRO_OLED_ENABLE
-#include "micro_oled.h"
-#include "qwiic.h"
-#endif
-
#include "timer.h"
#include "raw_hid.h"
#include "dynamic_keymap.h"
-#include "tmk_core/common/eeprom.h"
+#include "eeprom.h"
#include "version.h" // for QMK_BUILDDATE used in EEPROM magic
/* Artificial delay added to get media keys to work in the encoder*/
#define MEDIA_KEY_DELAY 10
-uint16_t last_flush;
-
volatile uint8_t led_numlock = false;
volatile uint8_t led_capslock = false;
volatile uint8_t led_scrolllock = false;
uint8_t layer;
-bool queue_for_send = false;
bool clock_set_mode = false;
uint8_t oled_mode = OLED_DEFAULT;
-bool oled_sleeping = false;
+bool oled_repaint_requested = false;
+bool oled_wakeup_requested = false;
+uint32_t oled_sleep_timer;
uint8_t encoder_value = 32;
uint8_t encoder_mode = ENC_MODE_VOLUME;
@@ -167,7 +161,7 @@ void raw_hid_receive_kb( uint8_t *data, uint8_t length )
case id_oled_mode:
{
oled_mode = command_data[1];
- draw_ui();
+ oled_request_wakeup();
break;
}
case id_encoder_modes:
@@ -247,18 +241,17 @@ void read_host_led_state(void) {
layer_state_t layer_state_set_kb(layer_state_t state) {
state = layer_state_set_user(state);
layer = biton32(state);
- queue_for_send = true;
+ oled_request_wakeup();
return state;
}
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- queue_for_send = true;
+ oled_request_wakeup();
switch (keycode) {
case OLED_TOGG:
if(!clock_set_mode){
if (record->event.pressed) {
oled_mode = (oled_mode + 1) % _NUM_OLED_MODES;
- draw_ui();
}
}
return false;
@@ -302,8 +295,8 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) return false;
+ oled_request_wakeup();
encoder_value = (encoder_value + (clockwise ? 1 : -1)) % 64;
- queue_for_send = true;
if (index == 0) {
if (layer == 0){
uint16_t mapped_code = 0;
@@ -376,9 +369,9 @@ void matrix_init_kb(void)
#endif // VIA_ENABLE
rtcGetTime(&RTCD1, &last_timespec);
- queue_for_send = true;
backlight_init_ports();
matrix_init_user();
+ oled_request_wakeup();
}
@@ -388,22 +381,8 @@ void housekeeping_task_kb(void) {
if (minutes_since_midnight != last_minute){
last_minute = minutes_since_midnight;
- if(!oled_sleeping){
- queue_for_send = true;
- }
+ oled_request_repaint();
}
-#ifdef QWIIC_MICRO_OLED_ENABLE
- if (queue_for_send && oled_mode != OLED_OFF) {
- oled_sleeping = false;
- read_host_led_state();
- draw_ui();
- queue_for_send = false;
- }
- if (timer_elapsed(last_flush) > ScreenOffInterval && !oled_sleeping) {
- send_command(DISPLAYOFF); /* 0xAE */
- oled_sleeping = true;
- }
-#endif
}
//
diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction75.h b/keyboards/cannonkeys/satisfaction75/satisfaction75.h
index 13aaf688826..c6dbc31f1bb 100644
--- a/keyboards/cannonkeys/satisfaction75/satisfaction75.h
+++ b/keyboards/cannonkeys/satisfaction75/satisfaction75.h
@@ -14,9 +14,6 @@
#define EEPROM_DEFAULT_OLED (VIA_EEPROM_CUSTOM_CONFIG_ADDR+2)
#define EEPROM_CUSTOM_ENCODER (VIA_EEPROM_CUSTOM_CONFIG_ADDR+3)
-/* screen off after this many milliseconds */
-#define ScreenOffInterval 60000 /* milliseconds */
-
typedef union {
uint8_t raw;
struct {
@@ -74,10 +71,10 @@ extern volatile uint8_t led_scrolllock;
extern uint8_t layer;
// OLED Behavior
-extern uint16_t last_flush;
-extern bool queue_for_send;
extern uint8_t oled_mode;
-extern bool oled_sleeping;
+extern bool oled_repaint_requested;
+extern bool oled_wakeup_requested;
+extern uint32_t oled_sleep_timer;
// Encoder Behavior
extern uint8_t encoder_value;
@@ -113,10 +110,9 @@ void set_custom_encoder_config(uint8_t encoder_idx, uint8_t behavior, uint16_t n
void update_time_config(int8_t increment);
-__attribute__ ((weak))
-void draw_ui(void);
-void draw_default(void);
-void draw_clock(void);
+void oled_request_wakeup(void);
+void oled_request_repaint(void);
+bool oled_task_needs_to_repaint(void);
void backlight_init_ports(void);
void backlight_set(uint8_t level);
diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction_encoder.c b/keyboards/cannonkeys/satisfaction75/satisfaction_encoder.c
index 8fcd720e2f9..0d2fdc359cf 100644
--- a/keyboards/cannonkeys/satisfaction75/satisfaction_encoder.c
+++ b/keyboards/cannonkeys/satisfaction75/satisfaction_encoder.c
@@ -1,5 +1,5 @@
#include "satisfaction75.h"
-#include "tmk_core/common/eeprom.h"
+#include "eeprom.h"
void pre_encoder_mode_change(){
if(encoder_mode == ENC_MODE_CLOCK_SET){
@@ -125,7 +125,6 @@ uint16_t handle_encoder_clockwise(){
#endif
case ENC_MODE_CLOCK_SET:
update_time_config(1);
- queue_for_send = true;
break;
}
return mapped_code;
@@ -171,7 +170,6 @@ uint16_t handle_encoder_ccw(){
case ENC_MODE_CLOCK_SET:
update_time_config(-1);
- queue_for_send = true;
break;
}
return mapped_code;
diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction_oled.c b/keyboards/cannonkeys/satisfaction75/satisfaction_oled.c
index 6553bd13004..fff8b65bd70 100644
--- a/keyboards/cannonkeys/satisfaction75/satisfaction_oled.c
+++ b/keyboards/cannonkeys/satisfaction75/satisfaction_oled.c
@@ -1,271 +1,267 @@
#include "satisfaction75.h"
-#include "micro_oled.h"
-
-__attribute__ ((weak))
-void draw_ui() {
-#ifdef QWIIC_MICRO_OLED_ENABLE
- clear_buffer();
- last_flush = timer_read();
- send_command(DISPLAYON);
- if(clock_set_mode){
- draw_clock();
- return;
- }
- switch (oled_mode){
- default:
- case OLED_DEFAULT:
- draw_default();
- break;
- case OLED_TIME:
- draw_clock();
- break;
- case OLED_OFF:
- send_command(DISPLAYOFF);
- break;
- }
-#endif
+
+void draw_default(void);
+void draw_clock(void);
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_0; }
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) { return false; }
+ if (!oled_task_needs_to_repaint()) {
+ return false;
+ }
+ oled_clear();
+ if (clock_set_mode) {
+ draw_clock();
+ return false;;
+ }
+ switch (oled_mode) {
+ default:
+ case OLED_DEFAULT:
+ draw_default();
+ break;
+ case OLED_TIME:
+ draw_clock();
+ break;
+ }
+ return false;
}
-void draw_encoder(int8_t startX, int8_t startY, bool show_legend){
- if(show_legend){
- draw_string(startX + 1, startY + 2, "ENC", PIXEL_ON, NORM, 0);
- } else {
- startX -= 22;
- }
- draw_rect_filled_soft(startX + 22, startY + 1, 3 + (3 * 6), 9, PIXEL_ON, NORM);
- char* mode_string = "";
- switch(encoder_mode){
- default:
- case ENC_MODE_VOLUME:
- mode_string = "VOL";
- break;
- case ENC_MODE_MEDIA:
- mode_string = "MED";
- break;
- case ENC_MODE_SCROLL:
- mode_string = "SCR";
- break;
- case ENC_MODE_BRIGHTNESS:
- mode_string = "BRT";
- break;
- case ENC_MODE_BACKLIGHT:
- mode_string = "BKL";
- break;
- case ENC_MODE_CLOCK_SET:
- mode_string = "CLK";
- break;
- case ENC_MODE_CUSTOM0:
- mode_string = "CS0";
- break;
- case ENC_MODE_CUSTOM1:
- mode_string = "CS1";
- break;
- case ENC_MODE_CUSTOM2:
- mode_string = "CS2";
- break;
- }
- draw_string(startX + 24, startY + 2, mode_string, PIXEL_ON, XOR, 0);
+// Request a repaint of the OLED image without resetting the OLED sleep timer.
+// Used for things like clock updates that should not keep the OLED turned on
+// if there is no other activity.
+void oled_request_repaint(void) {
+ if (is_oled_on()) {
+ oled_repaint_requested = true;
+ }
}
-void draw_layer_section(int8_t startX, int8_t startY, bool show_legend){
- if(show_legend){
- draw_string(startX + 1, startY + 2, "LAYER", PIXEL_ON, NORM, 0);
- } else {
- startX -= 32;
- }
- draw_rect_filled_soft(startX + 32, startY + 1, 9, 9, PIXEL_ON, NORM);
- draw_char(startX + 34, startY + 2, layer + 0x30, PIXEL_ON, XOR, 0);
+// Request a repaint of the OLED image and reset the OLED sleep timer.
+// Needs to be called after any activity that should keep the OLED turned on.
+void oled_request_wakeup(void) {
+ oled_wakeup_requested = true;
}
-void draw_default(){
- uint8_t hour = last_minute / 60;
- uint16_t minute = last_minute % 60;
+// Check whether oled_task_user() needs to repaint the OLED image. This
+// function should be called at the start of oled_task_user(); it also handles
+// the OLED sleep timer and the OLED_OFF mode.
+bool oled_task_needs_to_repaint(void) {
+ // In the OLED_OFF mode the OLED is kept turned off; any wakeup requests
+ // are ignored.
+ if ((oled_mode == OLED_OFF) && !clock_set_mode) {
+ oled_wakeup_requested = false;
+ oled_repaint_requested = false;
+ oled_off();
+ return false;
+ }
- if(encoder_mode == ENC_MODE_CLOCK_SET){
- hour = hour_config;
- minute = minute_config;
- }
+ // If OLED wakeup was requested, reset the sleep timer and do a repaint.
+ if (oled_wakeup_requested) {
+ oled_wakeup_requested = false;
+ oled_repaint_requested = false;
+ oled_sleep_timer = timer_read32() + CUSTOM_OLED_TIMEOUT;
+ oled_on();
+ return true;
+ }
- bool is_pm = (hour / 12) > 0;
- hour = hour % 12;
- if (hour == 0){
- hour = 12;
- }
- char hour_str[3] = "";
- char min_str[3] = "";
+ // If OLED repaint was requested, just do a repaint without touching the
+ // sleep timer.
+ if (oled_repaint_requested) {
+ oled_repaint_requested = false;
+ return true;
+ }
- sprintf(hour_str, "%02d", hour);
- sprintf(min_str, "%02d", minute);
+ // If the OLED is currently off, skip the repaint (which would turn the
+ // OLED on if the image is changed in any way).
+ if (!is_oled_on()) {
+ return false;
+ }
- uint8_t mods = get_mods();
+ // If the sleep timer has expired while the OLED was on, turn the OLED off.
+ if (timer_expired32(timer_read32(), oled_sleep_timer)) {
+ oled_off();
+ return false;
+ }
-/* Layer indicator is 41 x 10 pixels */
- draw_layer_section(0,0,true);
+ // Always perform a repaint if the OLED is currently on. (This can
+ // potentially be optimized to avoid unneeded repaints if all possible
+ // state changes are covered by oled_request_repaint() or
+ // oled_request_wakeup(), but then any missed calls to these functions
+ // would result in displaying a stale image.)
+ return true;
+}
-#define ENCODER_INDICATOR_X 45
-#define ENCODER_INDICATOR_Y 0
- draw_encoder(ENCODER_INDICATOR_X, ENCODER_INDICATOR_Y, true);
-/* Matrix display is 19 x 9 pixels */
-#define MATRIX_DISPLAY_X 0
-#define MATRIX_DISPLAY_Y 18
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- for (uint8_t y = 0; y < MATRIX_COLS; y++) {
- draw_pixel(MATRIX_DISPLAY_X + y + 2, MATRIX_DISPLAY_Y + x + 2,(matrix_get_row(x) & (1 << y)) > 0, NORM);
+static void draw_line_h(uint8_t x, uint8_t y, uint8_t len) {
+ for (uint8_t i = 0; i < len; i++) {
+ oled_write_pixel(i + x, y, true);
}
- }
- draw_rect_soft(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y, 19, 9, PIXEL_ON, NORM);
- /* hadron oled location on thumbnail */
- draw_rect_filled_soft(MATRIX_DISPLAY_X + 14, MATRIX_DISPLAY_Y + 2, 3, 1, PIXEL_ON, NORM);
-
-/* Mod display is 41 x 16 pixels */
-#define MOD_DISPLAY_X 30
-#define MOD_DISPLAY_Y 18
-
- if (mods & MOD_LSFT) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 0, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 3, MOD_DISPLAY_Y + 2, "S", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 3, MOD_DISPLAY_Y + 2, "S", PIXEL_ON, NORM, 0);
- }
- if (mods & MOD_LCTL) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 10, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 13, MOD_DISPLAY_Y + 2, "C", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 13, MOD_DISPLAY_Y + 2, "C", PIXEL_ON, NORM, 0);
- }
- if (mods & MOD_LALT) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 20, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 23, MOD_DISPLAY_Y + 2, "A", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 23, MOD_DISPLAY_Y + 2, "A", PIXEL_ON, NORM, 0);
- }
- if (mods & MOD_LGUI) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 30, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 33, MOD_DISPLAY_Y + 2, "G", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 33, MOD_DISPLAY_Y + 2, "G", PIXEL_ON, NORM, 0);
- }
-
-/* Lock display is 23 x 21 */
-#define LOCK_DISPLAY_X 100
-#define LOCK_DISPLAY_Y 0
-
- if (led_capslock == true) {
- draw_rect_filled_soft(LOCK_DISPLAY_X + 0, LOCK_DISPLAY_Y, 5 + (3 * 6), 9, PIXEL_ON, NORM);
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y +1, "CAP", PIXEL_OFF, NORM, 0);
- } else if (led_capslock == false) {
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y +1, "CAP", PIXEL_ON, NORM, 0);
- }
-
- if (led_scrolllock == true) {
- draw_rect_filled_soft(LOCK_DISPLAY_X + 0, LOCK_DISPLAY_Y + 11, 5 + (3 * 6), 9, PIXEL_ON, NORM);
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 11 +1, "SCR", PIXEL_OFF, NORM, 0);
- } else if (led_scrolllock == false) {
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 11 +1, "SCR", PIXEL_ON, NORM, 0);
- }
-
-#define TIME_DISPLAY_X 82
-#define TIME_DISPLAY_Y 22
- draw_string(TIME_DISPLAY_X, TIME_DISPLAY_Y, hour_str, PIXEL_ON, NORM, 0);
- draw_string(TIME_DISPLAY_X + 11, TIME_DISPLAY_Y, ":", PIXEL_ON, NORM, 0);
- draw_string(TIME_DISPLAY_X + 15, TIME_DISPLAY_Y, min_str, PIXEL_ON, NORM, 0);
- if(is_pm){
- draw_string(TIME_DISPLAY_X + 27, TIME_DISPLAY_Y, "pm", PIXEL_ON, NORM, 0);
- } else{
- draw_string(TIME_DISPLAY_X + 27, TIME_DISPLAY_Y, "am", PIXEL_ON, NORM, 0);
- }
-
- send_buffer();
}
-void draw_clock(){
- int8_t hour = last_minute / 60;
- int16_t minute = last_minute % 60;
- int16_t year = last_timespec.year + 1980;
- int8_t month = last_timespec.month;
- int8_t day = last_timespec.day;
-
- if(encoder_mode == ENC_MODE_CLOCK_SET){
- hour = hour_config;
- minute = minute_config;
- year = year_config + 1980;
- month = month_config;
- day = day_config;
- }
-
- bool is_pm = (hour / 12) > 0;
- hour = hour % 12;
- if (hour == 0){
- hour = 12;
- }
- char hour_str[3] = "";
- char min_str[3] = "";
- char year_str[5] = "";
- char month_str[3] = "";
- char day_str[3] = "";
-
- sprintf(hour_str, "%02d", hour);
- sprintf(min_str, "%02d", minute);
- sprintf(year_str, "%d", year);
- sprintf(month_str, "%02d", month);
- sprintf(day_str, "%02d", day);
-
-
-#define DATE_DISPLAY_X 6
-#define DATE_DISPLAY_Y 0
- draw_string(DATE_DISPLAY_X, DATE_DISPLAY_Y, year_str, PIXEL_ON, NORM, 0);
- draw_string(DATE_DISPLAY_X + 25, DATE_DISPLAY_Y, "-", PIXEL_ON, NORM, 0);
- draw_string(DATE_DISPLAY_X + 31, DATE_DISPLAY_Y, month_str, PIXEL_ON, NORM, 0);
- draw_string(DATE_DISPLAY_X + 44, DATE_DISPLAY_Y, "-", PIXEL_ON, NORM, 0);
- draw_string(DATE_DISPLAY_X + 50, DATE_DISPLAY_Y, day_str, PIXEL_ON, NORM, 0);
-
-#define CLOCK_DISPLAY_X 6
-#define CLOCK_DISPLAY_Y 14
- draw_string(CLOCK_DISPLAY_X, CLOCK_DISPLAY_Y, hour_str, PIXEL_ON, NORM, 1);
- draw_string(CLOCK_DISPLAY_X + 17, CLOCK_DISPLAY_Y, ":", PIXEL_ON, NORM, 1);
- draw_string(CLOCK_DISPLAY_X + 25, CLOCK_DISPLAY_Y, min_str, PIXEL_ON, NORM, 1);
- if(is_pm){
- draw_string(CLOCK_DISPLAY_X + 41, CLOCK_DISPLAY_Y, "pm", PIXEL_ON, NORM, 1);
- } else{
- draw_string(CLOCK_DISPLAY_X + 41, CLOCK_DISPLAY_Y, "am", PIXEL_ON, NORM, 1);
- }
-
- if(clock_set_mode){
- switch(time_config_idx){
- case 0: // hour
- default:
- draw_line(CLOCK_DISPLAY_X, CLOCK_DISPLAY_Y + 17, CLOCK_DISPLAY_X + 16, CLOCK_DISPLAY_Y + 17, PIXEL_ON, NORM);
- break;
- case 1: // minute
- draw_line(CLOCK_DISPLAY_X + 25, CLOCK_DISPLAY_Y + 17, CLOCK_DISPLAY_X + 41, CLOCK_DISPLAY_Y + 17, PIXEL_ON, NORM);
- break;
- case 2: // year
- draw_line(DATE_DISPLAY_X, DATE_DISPLAY_Y + 9, DATE_DISPLAY_X + 23, DATE_DISPLAY_Y + 9, PIXEL_ON, NORM);
- break;
- case 3: // month
- draw_line(DATE_DISPLAY_X + 31, DATE_DISPLAY_Y + 9, DATE_DISPLAY_X + 43, DATE_DISPLAY_Y + 9, PIXEL_ON, NORM);
- break;
- case 4: //day
- draw_line(DATE_DISPLAY_X + 50, DATE_DISPLAY_Y + 9, DATE_DISPLAY_X + 61, DATE_DISPLAY_Y + 9,PIXEL_ON, NORM);
- break;
+static void draw_line_v(uint8_t x, uint8_t y, uint8_t len) {
+ for (uint8_t i = 0; i < len; i++) {
+ oled_write_pixel(x, i + y, true);
}
- }
+}
- draw_encoder(80, 0, true);
- draw_layer_section(80, 11, true);
+static char* get_enc_mode(void) {
+ switch (encoder_mode) {
+ default:
+ case ENC_MODE_VOLUME:
+ return "VOL";
+ case ENC_MODE_MEDIA:
+ return "MED";
+ case ENC_MODE_SCROLL:
+ return "SCR";
+ case ENC_MODE_BRIGHTNESS:
+ return "BRT";
+ case ENC_MODE_BACKLIGHT:
+ return "BKL";
+ case ENC_MODE_CLOCK_SET:
+ return "CLK";
+ case ENC_MODE_CUSTOM0:
+ return "CS0";
+ case ENC_MODE_CUSTOM1:
+ return "CS1";
+ case ENC_MODE_CUSTOM2:
+ return "CS2";
+ }
+}
-#define CAPS_DISPLAY_X 86
-#define CAPS_DISPLAY_Y 22
+static char* get_time(void) {
+ uint8_t hour = last_minute / 60;
+ uint16_t minute = last_minute % 60;
- if (led_capslock == true) {
- draw_rect_filled_soft(CAPS_DISPLAY_X, CAPS_DISPLAY_Y, 5 + (4 * 6), 9, PIXEL_ON, NORM);
- draw_string(CAPS_DISPLAY_X + 3, CAPS_DISPLAY_Y +1, "CAPS", PIXEL_OFF, NORM, 0);
- } else if (led_capslock == false) {
- draw_string(CAPS_DISPLAY_X + 3, CAPS_DISPLAY_Y +1, "CAPS", PIXEL_ON, NORM, 0);
- }
+ if (encoder_mode == ENC_MODE_CLOCK_SET) {
+ hour = hour_config;
+ minute = minute_config;
+ }
+ bool is_pm = (hour / 12) > 0;
+ hour = hour % 12;
+ if (hour == 0) {
+ hour = 12;
+ }
- send_buffer();
+ static char time_str[8] = "";
+ sprintf(time_str, "%02d:%02d%s", hour, minute, is_pm ? "pm" : "am");
+ return time_str;
}
+
+static char* get_date(void) {
+ int16_t year = last_timespec.year + 1980;
+ int8_t month = last_timespec.month;
+ int8_t day = last_timespec.day;
+
+ if (encoder_mode == ENC_MODE_CLOCK_SET) {
+ year = year_config + 1980;
+ month = month_config;
+ day = day_config;
+ }
+
+ static char date_str[11] = "";
+ sprintf(date_str, "%04d-%02d-%02d", year, month, day);
+
+ return date_str;
+}
+
+void draw_default() {
+ oled_write_P(PSTR("LAYER "), false);
+ oled_write_char(get_highest_layer(layer_state) + 0x30, true);
+
+ oled_write_P(PSTR(" ENC "), false);
+ oled_write(get_enc_mode(), true);
+
+ led_t led_state = host_keyboard_led_state();
+ oled_set_cursor(18, 0);
+ oled_write_P(PSTR("CAP"), led_state.caps_lock);
+ oled_set_cursor(18, 1);
+ oled_write_P(PSTR("SCR"), led_state.scroll_lock);
+
+ uint8_t mod_state = get_mods();
+ oled_set_cursor(6, 3);
+ oled_write_P(PSTR("S"), mod_state & MOD_MASK_SHIFT);
+ oled_advance_char();
+ oled_write_P(PSTR("C"), mod_state & MOD_MASK_CTRL);
+ oled_advance_char();
+ oled_write_P(PSTR("A"), mod_state & MOD_MASK_ALT);
+ oled_advance_char();
+ oled_write_P(PSTR("G"), mod_state & MOD_MASK_GUI);
+ oled_advance_char();
+
+ oled_write(get_time(), false);
+
+/* Matrix display is 12 x 12 pixels */
+#define MATRIX_DISPLAY_X 0
+#define MATRIX_DISPLAY_Y 18
+
+ // matrix
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ for (uint8_t y = 0; y < MATRIX_COLS; y++) {
+ bool on = (matrix_get_row(x) & (1 << y)) > 0;
+ oled_write_pixel(MATRIX_DISPLAY_X + y + 2, MATRIX_DISPLAY_Y + x + 2, on);
+ }
+ }
+
+ // outline
+ draw_line_h(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y, 19);
+ draw_line_h(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y + 9, 19);
+ draw_line_v(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y, 9);
+ draw_line_v(MATRIX_DISPLAY_X + 19, MATRIX_DISPLAY_Y, 9);
+
+ // oled location
+ draw_line_h(MATRIX_DISPLAY_X + 14, MATRIX_DISPLAY_Y + 2, 3);
+
+ // bodge extra lines for invert layer and enc mode
+ draw_line_v(35, 0, 8);
+ draw_line_v(71, 0, 8);
+}
+
+void draw_clock() {
+ oled_set_cursor(0, 0);
+ oled_write(get_date(), false);
+ oled_set_cursor(0, 2);
+ oled_write(get_time(), false);
+
+ oled_set_cursor(12, 0);
+ oled_write_P(PSTR(" ENC "), false);
+ oled_write(get_enc_mode(), true);
+
+ oled_set_cursor(13, 1);
+ oled_write_P(PSTR("LAYER "), false);
+ oled_write_char(get_highest_layer(layer_state) + 0x30, true);
+
+ led_t led_state = host_keyboard_led_state();
+ oled_set_cursor(15, 3);
+ oled_write_P(PSTR("CAPS"), led_state.caps_lock);
+
+ if (clock_set_mode) {
+ switch (time_config_idx) {
+ case 0: // hour
+ default:
+ draw_line_h(0, 25, 10);
+ break;
+ case 1: // minute
+ draw_line_h(18, 25, 10);
+ break;
+ case 2: // year
+ draw_line_h(0, 9, 24);
+ break;
+ case 3: // month
+ draw_line_h(30, 9, 10);
+ break;
+ case 4: // day
+ draw_line_h(48, 9, 10);
+ break;
+ }
+ }
+
+ // bodge extra lines for invert layer and enc mode
+ draw_line_v(101, 0, 8);
+ draw_line_v(113, 8, 8);
+}
+
+#endif
diff --git a/keyboards/cannonkeys/savage65/rules.mk b/keyboards/cannonkeys/savage65/rules.mk
index 92e945d8f59..d5f41eccd08 100644
--- a/keyboards/cannonkeys/savage65/rules.mk
+++ b/keyboards/cannonkeys/savage65/rules.mk
@@ -12,7 +12,7 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/tmov2/rules.mk b/keyboards/cannonkeys/tmov2/rules.mk
index 7464df414b2..d068ea28a77 100644
--- a/keyboards/cannonkeys/tmov2/rules.mk
+++ b/keyboards/cannonkeys/tmov2/rules.mk
@@ -12,7 +12,7 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/tsukuyomi/rules.mk b/keyboards/cannonkeys/tsukuyomi/rules.mk
index aa0b3116a9f..1f61cca45f2 100644
--- a/keyboards/cannonkeys/tsukuyomi/rules.mk
+++ b/keyboards/cannonkeys/tsukuyomi/rules.mk
@@ -10,7 +10,7 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cannonkeys/vicious40/rules.mk b/keyboards/cannonkeys/vicious40/rules.mk
index 490af346fc0..0b98c9aad8d 100644
--- a/keyboards/cannonkeys/vicious40/rules.mk
+++ b/keyboards/cannonkeys/vicious40/rules.mk
@@ -10,7 +10,7 @@ DFU_SUFFIX_ARGS = -p FFFF -v FFFF
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/capsunlocked/cu65/rules.mk b/keyboards/capsunlocked/cu65/rules.mk
index d282a8a11f6..7a5eae962de 100644
--- a/keyboards/capsunlocked/cu65/rules.mk
+++ b/keyboards/capsunlocked/cu65/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/capsunlocked/cu7/rules.mk b/keyboards/capsunlocked/cu7/rules.mk
index 1bf9ed41879..599aa6616ee 100644
--- a/keyboards/capsunlocked/cu7/rules.mk
+++ b/keyboards/capsunlocked/cu7/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/capsunlocked/cu80/v2_ansi/info.json b/keyboards/capsunlocked/cu80/v2_ansi/info.json
index 4817f5d885e..f0317de36d5 100644
--- a/keyboards/capsunlocked/cu80/v2_ansi/info.json
+++ b/keyboards/capsunlocked/cu80/v2_ansi/info.json
@@ -9,7 +9,7 @@
"audio": false,
"backlight": false,
"bluetooth": false,
- "bootmagic_lite": true,
+ "bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
diff --git a/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h b/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h
index 7e0f0bfccdf..00a05ad7da0 100644
--- a/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h
+++ b/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h
@@ -26,6 +26,54 @@ along with this program. If not, see .
/* moved to RGB specific */
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
+// 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
/* RGB firmware override */
#undef RGBLIGHT_ANIMATIONS
diff --git a/keyboards/capsunlocked/cu80/v2_iso/info.json b/keyboards/capsunlocked/cu80/v2_iso/info.json
index b59f073f829..c3321560695 100644
--- a/keyboards/capsunlocked/cu80/v2_iso/info.json
+++ b/keyboards/capsunlocked/cu80/v2_iso/info.json
@@ -9,7 +9,7 @@
"audio": false,
"backlight": false,
"bluetooth": false,
- "bootmagic_lite": true,
+ "bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
diff --git a/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h b/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h
index 3f784e2e063..dbe9143b8bc 100644
--- a/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h
+++ b/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h
@@ -25,6 +25,54 @@ along with this program. If not, see .
/* moved to RGB specific */
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
+// 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
/* RGB firmware override */
#undef RGBLIGHT_ANIMATIONS
diff --git a/keyboards/carbo65/rules.mk b/keyboards/carbo65/rules.mk
index 73ddf1a5959..8d14f05b82c 100644
--- a/keyboards/carbo65/rules.mk
+++ b/keyboards/carbo65/rules.mk
@@ -12,7 +12,7 @@ OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/cassette42/keymaps/default/keymap.c b/keyboards/cassette42/keymaps/default/keymap.c
index b678ccf9b59..4943be9c7b3 100644
--- a/keyboards/cassette42/keymaps/default/keymap.c
+++ b/keyboards/cassette42/keymaps/default/keymap.c
@@ -101,12 +101,13 @@ void render_status(void) {
RENDER_LED_STATUS();
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
render_status();
} else {
render_logo();
}
+ return false;
}
#endif
diff --git a/keyboards/cest73/tkm/rules.mk b/keyboards/cest73/tkm/rules.mk
index ef217933230..b1a5ec8ed14 100644
--- a/keyboards/cest73/tkm/rules.mk
+++ b/keyboards/cest73/tkm/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/chalice/chalice.h b/keyboards/chalice/chalice.h
index a0bc0026f62..c55cd4ba0b2 100644
--- a/keyboards/chalice/chalice.h
+++ b/keyboards/chalice/chalice.h
@@ -17,44 +17,44 @@
#pragma once
-#define ____ KC_NO
+#define ___ KC_NO
#include "quantum.h"
#define LAYOUT_default( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
- K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K214, \
- K401, K402, K404, K406, K408, K410, K411, K412, K413, K314 \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K46, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K56, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K66, K76, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K86, K96, \
+ K80, K91, K82, K92, K83, K93, K84, K94, K85, K95 \
) { \
- { K000, K002, K004, K006, K008, K010, K012 }, \
- { K001, K003, K005, K007, K009, K011, K013 }, \
- { K100, K102, K104, K106, K108, K110, K112 }, \
- { K101, K103, K105, K107, K109, K111, K113 }, \
- { K200, K202, K204, K206, K208, K210, K014 }, \
- { K201, K203, K205, K207, K209, K211, K114 }, \
- { K301, K303, K305, K307, K309, K311, K212 }, \
- { K302, K304, K306, K308, K310, K312, K213 }, \
- { K401, ____, K404, K408, K411, K413, K313 }, \
- { ____, K402, K406, K410, K412, K314, K214 } \
+ { K00, K01, K02, K03, K04, K05, K06 }, \
+ { K10, K11, K12, K13, K14, K15, K16 }, \
+ { K20, K21, K22, K23, K24, K25, K26 }, \
+ { K30, K31, K32, K33, K34, K35, K36 }, \
+ { K40, K41, K42, K43, K44, K45, K46 }, \
+ { K50, K51, K52, K53, K54, K55, K56 }, \
+ { K60, K61, K62, K63, K64, K65, K66 }, \
+ { K70, K71, K72, K73, K74, K75, K76 }, \
+ { K80, ___, K82, K83, K84, K85, K86 }, \
+ { ___, K91, K92, K93, K94, K95, K96 } \
}
#define LAYOUT_split_bs( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K403, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
- K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K214, \
- K401, K402, K404, K406, K408, K410, K411, K412, K413, K314 \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K46, K81, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K56, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K66, K76, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K86, K96, \
+ K80, K91, K82, K92, K83, K93, K84, K94, K85, K95 \
) { \
- { K000, K002, K004, K006, K008, K010, K012 }, \
- { K001, K003, K005, K007, K009, K011, K013 }, \
- { K100, K102, K104, K106, K108, K110, K112 }, \
- { K101, K103, K105, K107, K109, K111, K113 }, \
- { K200, K202, K204, K206, K208, K210, K014 }, \
- { K201, K203, K205, K207, K209, K211, K114 }, \
- { K301, K303, K305, K307, K309, K311, K212 }, \
- { K302, K304, K306, K308, K310, K312, K213 }, \
- { K401, K403, K404, K408, K411, K413, K313 }, \
- { ____, K402, K406, K410, K412, K314, K214 } \
+ { K00, K01, K02, K03, K04, K05, K06 }, \
+ { K10, K11, K12, K13, K14, K15, K16 }, \
+ { K20, K21, K22, K23, K24, K25, K26 }, \
+ { K30, K31, K32, K33, K34, K35, K36 }, \
+ { K40, K41, K42, K43, K44, K45, K46 }, \
+ { K50, K51, K52, K53, K54, K55, K56 }, \
+ { K60, K61, K62, K63, K64, K65, K66 }, \
+ { K70, K71, K72, K73, K74, K75, K76 }, \
+ { K80, K81, K82, K83, K84, K85, K86 }, \
+ { ___, K91, K92, K93, K94, K95, K96 } \
}
diff --git a/keyboards/chalice/info.json b/keyboards/chalice/info.json
index 68bd710a371..77a3f7bc128 100644
--- a/keyboards/chalice/info.json
+++ b/keyboards/chalice/info.json
@@ -1,25 +1,27 @@
{
"keyboard_name": "Chalice",
"url": "https://customkbd.com/products/chalice-pre-order",
- "maintainer": "CustomKBD",
+ "maintainer": "joshajohnson, CustomKBD",
"layouts": {
"LAYOUT_default": {
"layout": [
{"label":"Esc", "x":0, "y":0},
- {"label":"~", "x":1.5, "y":0},
- {"label":"!", "x":2.5, "y":0},
- {"label":"@", "x":3.5, "y":0},
- {"label":"#", "x":4.5, "y":0},
- {"label":"$", "x":5.5, "y":0},
- {"label":"%", "x":6.5, "y":0},
- {"label":"^", "x":7.5, "y":0},
- {"label":"&", "x":10.5, "y":0},
- {"label":"*", "x":11.5, "y":0},
- {"label":"(", "x":12.5, "y":0},
- {"label":")", "x":13.5, "y":0},
- {"label":"_", "x":14.5, "y":0},
- {"label":"+", "x":15.5, "y":0},
+ {"label":"`~", "x":1.5, "y":0},
+ {"label":"1!", "x":2.5, "y":0},
+ {"label":"2@", "x":3.5, "y":0},
+ {"label":"3#", "x":4.5, "y":0},
+ {"label":"4$", "x":5.5, "y":0},
+ {"label":"5%", "x":6.5, "y":0},
+ {"label":"6^", "x":7.5, "y":0},
+ {"label":"7&", "x":10.5, "y":0},
+ {"label":"8*", "x":11.5, "y":0},
+ {"label":"9(", "x":12.5, "y":0},
+ {"label":"0)", "x":13.5, "y":0},
+ {"label":"-_", "x":14.5, "y":0},
+ {"label":"=+", "x":15.5, "y":0},
{"label":"Backspace", "x":16.5, "y":0, "w":2},
+
+ {"label":"Insert", "x":0, "y":1},
{"label":"Tab", "x":1.5, "y":1, "w":1.5},
{"label":"Q", "x":3, "y":1},
{"label":"W", "x":4, "y":1},
@@ -31,10 +33,10 @@
{"label":"I", "x":12, "y":1},
{"label":"O", "x":13, "y":1},
{"label":"P", "x":14, "y":1},
- {"label":"{", "x":15, "y":1},
- {"label":"}", "x":16, "y":1},
- {"label":"|", "x":17, "y":1, "w":1.5},
- {"label":"Mute", "x":19, "y":0.5},
+ {"label":"[{", "x":15, "y":1},
+ {"label":"]}", "x":16, "y":1},
+ {"label":"\\|", "x":17, "y":1, "w":1.5},
+
{"label":"Delete", "x":0, "y":2},
{"label":"Caps Lock", "x":1.5, "y":2, "w":1.75},
{"label":"A", "x":3.25, "y":2},
@@ -46,9 +48,10 @@
{"label":"J", "x":11.25, "y":2},
{"label":"K", "x":12.25, "y":2},
{"label":"L", "x":13.25, "y":2},
- {"label":":", "x":14.25, "y":2},
- {"label":"\"", "x":15.25, "y":2},
+ {"label":";:", "x":14.25, "y":2},
+ {"label":"'\"", "x":15.25, "y":2},
{"label":"Enter", "x":16.25, "y":2, "w":2.25},
+
{"label":"Shift", "x":1.5, "y":3, "w":2.25},
{"label":"Z", "x":3.75, "y":3},
{"label":"X", "x":4.75, "y":3},
@@ -58,21 +61,99 @@
{"label":"B", "x":9.75, "y":3},
{"label":"N", "x":10.75, "y":3},
{"label":"M", "x":11.75, "y":3},
- {"label":"<", "x":12.75, "y":3},
- {"label":">", "x":13.75, "y":3},
- {"label":"?", "x":14.75, "y":3},
+ {"label":",<", "x":12.75, "y":3},
+ {"label":".>", "x":13.75, "y":3},
+ {"label":"/?", "x":14.75, "y":3},
{"label":"Shift", "x":15.75, "y":3, "w":1.75},
- {"label":"Up", "x":17.75, "y":3.25},
+ {"label":"Up", "x":17.5, "y":3},
+
{"label":"Ctrl", "x":1.5, "y":4, "w":1.5},
{"label":"Alt", "x":4.5, "y":4, "w":1.5},
- {"label":"Space", "x":6, "y":4, "w":2},
- {"label":"Fn", "x":8, "y":4},
+ {"label":"Space", "x":6, "y":4, "w":2.25},
+ {"label":"Fn", "x":8.25, "y":4},
{"label":"Space", "x":9.75, "y":4, "w":2.75},
{"label":"Alt", "x":12.5, "y":4, "w":1.5},
{"label":"Ctrl", "x":15, "y":4, "w":1.5},
- {"label":"Left", "x":16.75, "y":4.25},
- {"label":"Down", "x":17.75, "y":4.25},
- {"label":"Right", "x":18.75, "y":4.25}
+ {"label":"Left", "x":16.5, "y":4},
+ {"label":"Down", "x":17.5, "y":4},
+ {"label":"Right", "x":18.5, "y":4}
+ ]
+ },
+ "LAYOUT_split_bs": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"`~", "x":1.5, "y":0},
+ {"label":"1!", "x":2.5, "y":0},
+ {"label":"2@", "x":3.5, "y":0},
+ {"label":"3#", "x":4.5, "y":0},
+ {"label":"4$", "x":5.5, "y":0},
+ {"label":"5%", "x":6.5, "y":0},
+ {"label":"6^", "x":7.5, "y":0},
+ {"label":"7&", "x":10.5, "y":0},
+ {"label":"8*", "x":11.5, "y":0},
+ {"label":"9(", "x":12.5, "y":0},
+ {"label":"0)", "x":13.5, "y":0},
+ {"label":"-_", "x":14.5, "y":0},
+ {"label":"=+", "x":15.5, "y":0},
+ {"label":"Backspace", "x":16.5, "y":0},
+ {"label":"Backspace", "x":17.5, "y":0},
+
+ {"label":"Insert", "x":0, "y":1},
+ {"label":"Tab", "x":1.5, "y":1, "w":1.5},
+ {"label":"Q", "x":3, "y":1},
+ {"label":"W", "x":4, "y":1},
+ {"label":"E", "x":5, "y":1},
+ {"label":"R", "x":6, "y":1},
+ {"label":"T", "x":7, "y":1},
+ {"label":"Y", "x":10, "y":1},
+ {"label":"U", "x":11, "y":1},
+ {"label":"I", "x":12, "y":1},
+ {"label":"O", "x":13, "y":1},
+ {"label":"P", "x":14, "y":1},
+ {"label":"[{", "x":15, "y":1},
+ {"label":"]}", "x":16, "y":1},
+ {"label":"\\|", "x":17, "y":1, "w":1.5},
+
+ {"label":"Delete", "x":0, "y":2},
+ {"label":"Caps Lock", "x":1.5, "y":2, "w":1.75},
+ {"label":"A", "x":3.25, "y":2},
+ {"label":"S", "x":4.25, "y":2},
+ {"label":"D", "x":5.25, "y":2},
+ {"label":"F", "x":6.25, "y":2},
+ {"label":"G", "x":7.25, "y":2},
+ {"label":"H", "x":10.25, "y":2},
+ {"label":"J", "x":11.25, "y":2},
+ {"label":"K", "x":12.25, "y":2},
+ {"label":"L", "x":13.25, "y":2},
+ {"label":";:", "x":14.25, "y":2},
+ {"label":"'\"", "x":15.25, "y":2},
+ {"label":"Enter", "x":16.25, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":1.5, "y":3, "w":2.25},
+ {"label":"Z", "x":3.75, "y":3},
+ {"label":"X", "x":4.75, "y":3},
+ {"label":"C", "x":5.75, "y":3},
+ {"label":"V", "x":6.75, "y":3},
+ {"label":"B", "x":7.75, "y":3},
+ {"label":"B", "x":9.75, "y":3},
+ {"label":"N", "x":10.75, "y":3},
+ {"label":"M", "x":11.75, "y":3},
+ {"label":",<", "x":12.75, "y":3},
+ {"label":".>", "x":13.75, "y":3},
+ {"label":"/?", "x":14.75, "y":3},
+ {"label":"Shift", "x":15.75, "y":3, "w":1.75},
+ {"label":"Up", "x":17.5, "y":3},
+
+ {"label":"Ctrl", "x":1.5, "y":4, "w":1.5},
+ {"label":"Alt", "x":4.5, "y":4, "w":1.5},
+ {"label":"Space", "x":6, "y":4, "w":2.25},
+ {"label":"Fn", "x":8.25, "y":4},
+ {"label":"Space", "x":9.75, "y":4, "w":2.75},
+ {"label":"Alt", "x":12.5, "y":4, "w":1.5},
+ {"label":"Ctrl", "x":15, "y":4, "w":1.5},
+ {"label":"Left", "x":16.5, "y":4},
+ {"label":"Down", "x":17.5, "y":4},
+ {"label":"Right", "x":18.5, "y":4}
]
}
}
diff --git a/keyboards/charue/sunsetter/rules.mk b/keyboards/charue/sunsetter/rules.mk
index 17aa543022b..f68afca696c 100644
--- a/keyboards/charue/sunsetter/rules.mk
+++ b/keyboards/charue/sunsetter/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/chavdai40/rev1/rules.mk b/keyboards/chavdai40/rev1/rules.mk
index 3c8cf0b1ee4..8ac58cee446 100644
--- a/keyboards/chavdai40/rev1/rules.mk
+++ b/keyboards/chavdai40/rev1/rules.mk
@@ -6,7 +6,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/chavdai40/rev2/rules.mk b/keyboards/chavdai40/rev2/rules.mk
index 3c8cf0b1ee4..8ac58cee446 100644
--- a/keyboards/chavdai40/rev2/rules.mk
+++ b/keyboards/chavdai40/rev2/rules.mk
@@ -6,7 +6,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/checkerboards/axon40/rules.mk b/keyboards/checkerboards/axon40/rules.mk
index 706a8ae201e..cf5d2e685d9 100644
--- a/keyboards/checkerboards/axon40/rules.mk
+++ b/keyboards/checkerboards/axon40/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/checkerboards/candybar_ortho/rules.mk b/keyboards/checkerboards/candybar_ortho/rules.mk
index c7325af4a4e..9c1d6cae25c 100644
--- a/keyboards/checkerboards/candybar_ortho/rules.mk
+++ b/keyboards/checkerboards/candybar_ortho/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/checkerboards/g_idb60/rules.mk b/keyboards/checkerboards/g_idb60/rules.mk
index c79f74e34b9..9906266f482 100644
--- a/keyboards/checkerboards/g_idb60/rules.mk
+++ b/keyboards/checkerboards/g_idb60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/checkerboards/nop60/rules.mk b/keyboards/checkerboards/nop60/rules.mk
index 032c08957e9..855a9a3cefa 100644
--- a/keyboards/checkerboards/nop60/rules.mk
+++ b/keyboards/checkerboards/nop60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/checkerboards/quark_squared/rules.mk b/keyboards/checkerboards/quark_squared/rules.mk
index c8a103221d1..5f39f8194b0 100644
--- a/keyboards/checkerboards/quark_squared/rules.mk
+++ b/keyboards/checkerboards/quark_squared/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/checkerboards/ud40_ortho_alt/rules.mk b/keyboards/checkerboards/ud40_ortho_alt/rules.mk
index 598ef9619fa..5d4aeea5d2b 100644
--- a/keyboards/checkerboards/ud40_ortho_alt/rules.mk
+++ b/keyboards/checkerboards/ud40_ortho_alt/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/cherrybstudio/cb1800/rules.mk b/keyboards/cherrybstudio/cb1800/rules.mk
index f3d44f97c85..57afa20fbf3 100644
--- a/keyboards/cherrybstudio/cb1800/rules.mk
+++ b/keyboards/cherrybstudio/cb1800/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/cherrybstudio/cb87/rules.mk b/keyboards/cherrybstudio/cb87/rules.mk
index 895ff3d4dd9..95ce654774f 100644
--- a/keyboards/cherrybstudio/cb87/rules.mk
+++ b/keyboards/cherrybstudio/cb87/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/cheshire/curiosity/rules.mk b/keyboards/cheshire/curiosity/rules.mk
index 6de036f0d3a..21c57114824 100644
--- a/keyboards/cheshire/curiosity/rules.mk
+++ b/keyboards/cheshire/curiosity/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/chidori/keymaps/oled_sample/keymap.c b/keyboards/chidori/keymaps/oled_sample/keymap.c
index a3bb7c28077..78107a18ec9 100644
--- a/keyboards/chidori/keymaps/oled_sample/keymap.c
+++ b/keyboards/chidori/keymaps/oled_sample/keymap.c
@@ -210,8 +210,9 @@ void oled_write_layer_state(void) {
}
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
// If you want to change the display of OLED, you need to change here
oled_write_layer_state();
+ return false;
}
#endif
diff --git a/keyboards/chili/rules.mk b/keyboards/chili/rules.mk
index 336ba86fbb8..8d43b3c377c 100644
--- a/keyboards/chili/rules.mk
+++ b/keyboards/chili/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/chimera_ergo/chimera_ergo.h b/keyboards/chimera_ergo/chimera_ergo.h
index 32d02886c47..b8897ac14ed 100644
--- a/keyboards/chimera_ergo/chimera_ergo.h
+++ b/keyboards/chimera_ergo/chimera_ergo.h
@@ -1,5 +1,4 @@
-#ifndef CHIMERA_ERGO_H
-#define CHIMERA_ERGO_H
+#pragma once
#include "quantum.h"
@@ -43,22 +42,21 @@
#define set_led_white PORTF |= (1<.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -66,5 +65,3 @@ along with this program. If not, see .
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
-
-#endif
diff --git a/keyboards/chimera_ls/chimera_ls.h b/keyboards/chimera_ls/chimera_ls.h
index 45c91acc3db..7d67d573db4 100644
--- a/keyboards/chimera_ls/chimera_ls.h
+++ b/keyboards/chimera_ls/chimera_ls.h
@@ -1,5 +1,4 @@
-#ifndef CHIMERA_LETS_SPLIT_H
-#define CHIMERA_LETS_SPLIT_H
+#pragma once
#include "quantum.h"
@@ -43,22 +42,21 @@
#define set_led_white PORTF |= (1<.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -66,5 +65,3 @@ along with this program. If not, see .
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
-
-#endif
diff --git a/keyboards/chimera_ortho/chimera_ortho.h b/keyboards/chimera_ortho/chimera_ortho.h
index ec893990a3a..03384c9b285 100644
--- a/keyboards/chimera_ortho/chimera_ortho.h
+++ b/keyboards/chimera_ortho/chimera_ortho.h
@@ -1,5 +1,4 @@
-#ifndef CHIMERA_ORTHO_H
-#define CHIMERA_ORTHO_H
+#pragma once
#include "quantum.h"
@@ -43,21 +42,20 @@
#define set_led_white PORTF |= (1<.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -66,5 +65,3 @@ along with this program. If not, see .
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
-
-#endif
diff --git a/keyboards/chlx/merro60/rules.mk b/keyboards/chlx/merro60/rules.mk
index bbf3580c013..511f2ca9de9 100644
--- a/keyboards/chlx/merro60/rules.mk
+++ b/keyboards/chlx/merro60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/choc_taro/rules.mk b/keyboards/choc_taro/rules.mk
index b00cd2f4702..3cd8a67a458 100644
--- a/keyboards/choc_taro/rules.mk
+++ b/keyboards/choc_taro/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/choco60/rev2/rules.mk b/keyboards/choco60/rev2/rules.mk
index ee45ed03f7f..85680a44d1c 100644
--- a/keyboards/choco60/rev2/rules.mk
+++ b/keyboards/choco60/rev2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/christmas_tree/V2017/V2017.h b/keyboards/christmas_tree/V2017/V2017.h
index a82a1e82f49..f779c0ed479 100644
--- a/keyboards/christmas_tree/V2017/V2017.h
+++ b/keyboards/christmas_tree/V2017/V2017.h
@@ -1,6 +1,3 @@
-#ifndef V2017_H
-#define V2017_H
+#pragma once
#include "christmas_tree.h"
-
-#endif
\ No newline at end of file
diff --git a/keyboards/christmas_tree/V2017/config.h b/keyboards/christmas_tree/V2017/config.h
index ebe3d3bf1e3..abc94749a85 100644
--- a/keyboards/christmas_tree/V2017/config.h
+++ b/keyboards/christmas_tree/V2017/config.h
@@ -1,8 +1,5 @@
-#ifndef V2017_CONFIG_H
-#define V2017_CONFIG_H
+#pragma once
#include "config_common.h"
#define DEVICE_VER 0x2017
-
-#endif
\ No newline at end of file
diff --git a/keyboards/christmas_tree/christmas_tree.h b/keyboards/christmas_tree/christmas_tree.h
index 11063c9152f..68eefca6a86 100644
--- a/keyboards/christmas_tree/christmas_tree.h
+++ b/keyboards/christmas_tree/christmas_tree.h
@@ -1,20 +1,14 @@
-#ifndef CHRISTMAS_TREE_H
-#define CHRISTMAS_TREE_H
-#include "quantum.h"
+#pragma once
+#include "quantum.h"
#define LAYOUT( \
- k00, k01, k02, k03, k04, k05 \
-) \
-{ \
- { k00 }, \
- { k01 }, \
- { k02 }, \
- { k03 }, \
- { k04 }, \
- { k05 } \
+ k00, k10, k20, k30, k40, k50 \
+) { \
+ { k00 }, \
+ { k10 }, \
+ { k20 }, \
+ { k30 }, \
+ { k40 }, \
+ { k50 } \
}
-
-
-
-#endif
diff --git a/keyboards/christmas_tree/config.h b/keyboards/christmas_tree/config.h
index 05e5bdb2b49..531c5996d2f 100644
--- a/keyboards/christmas_tree/config.h
+++ b/keyboards/christmas_tree/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -53,5 +52,3 @@ along with this program. If not, see .
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-#endif
diff --git a/keyboards/ck60i/rules.mk b/keyboards/ck60i/rules.mk
index 18b4e737ffc..baf54d1e2e5 100644
--- a/keyboards/ck60i/rules.mk
+++ b/keyboards/ck60i/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ckeys/nakey/config.h b/keyboards/ckeys/nakey/config.h
index 728eb8f132a..26ba86e1467 100644
--- a/keyboards/ckeys/nakey/config.h
+++ b/keyboards/ckeys/nakey/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -108,5 +107,3 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/ckeys/nakey/nakey.h b/keyboards/ckeys/nakey/nakey.h
index bbf531fb680..bdb26afa26b 100644
--- a/keyboards/ckeys/nakey/nakey.h
+++ b/keyboards/ckeys/nakey/nakey.h
@@ -13,27 +13,27 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef NAKEY_H
-#define NAKEY_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT_numpad_5x4( \
k00, k01, k02, k03, \
- k10, k11, k12, \
+ k10, k11, k12, \
k20, k21, k22, k13, \
- k30, k31, k32, \
- k40, k41, k33 \
+ k30, k31, k32, \
+ k40, k41, k33 \
) { \
- { k00, k01, k02, k03 }, \
- { k10, k11, k12, k13 }, \
- { k20, k21, k22, KC_NO }, \
- { k30, k31, k32, k33 }, \
- { k40, KC_NO, k41, KC_NO }, \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, XXX }, \
+ { k30, k31, k32, k33 }, \
+ { k40, XXX, k41, XXX } \
}
-
-#endif
diff --git a/keyboards/ckeys/obelus/config.h b/keyboards/ckeys/obelus/config.h
index 45bbd27ecc3..00e224c206b 100644
--- a/keyboards/ckeys/obelus/config.h
+++ b/keyboards/ckeys/obelus/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -109,5 +108,3 @@ along with this program. If not, see .
#define AUDIO_PIN C6
#define STARTUP_SONG SONG(STARTUP_SOUND)
#endif
-
-#endif
diff --git a/keyboards/ckeys/obelus/obelus.h b/keyboards/ckeys/obelus/obelus.h
index 371b79df201..76ff4f1a9f5 100644
--- a/keyboards/ckeys/obelus/obelus.h
+++ b/keyboards/ckeys/obelus/obelus.h
@@ -1,5 +1,4 @@
-#ifndef OBELUS_H
-#define OBELUS_H
+#pragma once
#include "quantum.h"
@@ -12,12 +11,9 @@
k10, k11, k12, k13, \
k20, k21, k22, k23, \
k30, k31, k32, k33 \
-) \
-{ \
+) { \
{ k00, k01, k02, k03 }, \
{ k10, k11, k12, k13 }, \
{ k20, k21, k22, k23 }, \
{ k30, k31, k32, k33 } \
}
-
-#endif
diff --git a/keyboards/ckeys/thedora/rules.mk b/keyboards/ckeys/thedora/rules.mk
index 3aabafc953d..2b322b2ab15 100755
--- a/keyboards/ckeys/thedora/rules.mk
+++ b/keyboards/ckeys/thedora/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ckeys/washington/keymaps/default/keymap.c b/keyboards/ckeys/washington/keymaps/default/keymap.c
index a83a28e955f..771905814a1 100644
--- a/keyboards/ckeys/washington/keymaps/default/keymap.c
+++ b/keyboards/ckeys/washington/keymaps/default/keymap.c
@@ -59,7 +59,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
#ifdef OLED_ENABLE
-void oled_task_user(void) {
+bool oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
switch (biton32(layer_state)) {
@@ -79,5 +79,6 @@ void oled_task_user(void) {
oled_write_P(IS_LED_ON(usb_led, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
oled_write_P(IS_LED_ON(usb_led, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
oled_write_P(IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
+ return false;
}
#endif
diff --git a/keyboards/claw44/keymaps/oled/keymap.c b/keyboards/claw44/keymaps/oled/keymap.c
index 07cb581712c..1778ac61672 100644
--- a/keyboards/claw44/keymaps/oled/keymap.c
+++ b/keyboards/claw44/keymaps/oled/keymap.c
@@ -140,7 +140,7 @@ void set_keylog(uint16_t keycode, keyrecord_t *record) {
const char *read_keylog(void) { return keylog_str; }
const char *read_keylogs(void) { return keylogs_str; }
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
render_layer_state();
oled_write_ln(read_keylog(), false);
@@ -148,6 +148,7 @@ void oled_task_user(void) {
} else {
render_logo();
}
+ return false;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/clawsome/bookerboard/rules.mk b/keyboards/clawsome/bookerboard/rules.mk
index d67d33602d6..dbf09230701 100644
--- a/keyboards/clawsome/bookerboard/rules.mk
+++ b/keyboards/clawsome/bookerboard/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/clawsome/coupe/rules.mk b/keyboards/clawsome/coupe/rules.mk
index 933784e9c02..13ab5087823 100644
--- a/keyboards/clawsome/coupe/rules.mk
+++ b/keyboards/clawsome/coupe/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/clawsome/doodle/rules.mk b/keyboards/clawsome/doodle/rules.mk
index 2bab9161758..a7f737a0866 100644
--- a/keyboards/clawsome/doodle/rules.mk
+++ b/keyboards/clawsome/doodle/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/clawsome/fightpad/rules.mk b/keyboards/clawsome/fightpad/rules.mk
index 1f14fe51968..c1149216c28 100644
--- a/keyboards/clawsome/fightpad/rules.mk
+++ b/keyboards/clawsome/fightpad/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/clawsome/gamebuddy/v1_0/rules.mk b/keyboards/clawsome/gamebuddy/v1_0/rules.mk
index 723de16c214..6b6d5488228 100644
--- a/keyboards/clawsome/gamebuddy/v1_0/rules.mk
+++ b/keyboards/clawsome/gamebuddy/v1_0/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/clawsome/gamebuddy/v1_m/rules.mk b/keyboards/clawsome/gamebuddy/v1_m/rules.mk
index 2bab9161758..a7f737a0866 100644
--- a/keyboards/clawsome/gamebuddy/v1_m/rules.mk
+++ b/keyboards/clawsome/gamebuddy/v1_m/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/clawsome/hatchback/rules.mk b/keyboards/clawsome/hatchback/rules.mk
index bd712c09820..74a7851e6c7 100644
--- a/keyboards/clawsome/hatchback/rules.mk
+++ b/keyboards/clawsome/hatchback/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/clawsome/luggage_rack/rules.mk b/keyboards/clawsome/luggage_rack/rules.mk
index bd712c09820..74a7851e6c7 100644
--- a/keyboards/clawsome/luggage_rack/rules.mk
+++ b/keyboards/clawsome/luggage_rack/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/clawsome/numeros/rules.mk b/keyboards/clawsome/numeros/rules.mk
index effbf1bbaa6..6550b56febd 100644
--- a/keyboards/clawsome/numeros/rules.mk
+++ b/keyboards/clawsome/numeros/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/clawsome/roadster/rules.mk b/keyboards/clawsome/roadster/rules.mk
index bd712c09820..74a7851e6c7 100644
--- a/keyboards/clawsome/roadster/rules.mk
+++ b/keyboards/clawsome/roadster/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/clawsome/sedan/rules.mk b/keyboards/clawsome/sedan/rules.mk
index 02b80f6fd21..732c4b6478d 100644
--- a/keyboards/clawsome/sedan/rules.mk
+++ b/keyboards/clawsome/sedan/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/clawsome/sidekick/rules.mk b/keyboards/clawsome/sidekick/rules.mk
index d67d33602d6..dbf09230701 100644
--- a/keyboards/clawsome/sidekick/rules.mk
+++ b/keyboards/clawsome/sidekick/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/clawsome/suv/rules.mk b/keyboards/clawsome/suv/rules.mk
index 2bab9161758..a7f737a0866 100644
--- a/keyboards/clawsome/suv/rules.mk
+++ b/keyboards/clawsome/suv/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/clueboard/17/17.h b/keyboards/clueboard/17/17.h
index ebf2083862f..ef5b3f3e04d 100644
--- a/keyboards/clueboard/17/17.h
+++ b/keyboards/clueboard/17/17.h
@@ -1,6 +1,3 @@
-#ifndef CLUEPAD_H
-#define CLUEPAD_H
+#pragma once
#include "quantum.h"
-
-#endif
diff --git a/keyboards/clueboard/17/config.h b/keyboards/clueboard/17/config.h
index 877f4786908..e2d0d1a23e4 100644
--- a/keyboards/clueboard/17/config.h
+++ b/keyboards/clueboard/17/config.h
@@ -15,12 +15,9 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
/* Number of backlighting levels */
#define BACKLIGHT_LEVELS 3
-
-#endif
diff --git a/keyboards/clueboard/17/info.json b/keyboards/clueboard/17/info.json
index 8ef87244ee3..fb12f7dccea 100644
--- a/keyboards/clueboard/17/info.json
+++ b/keyboards/clueboard/17/info.json
@@ -37,7 +37,6 @@
"vid": "0xC1ED"
},
"layout_aliases": {
- "KEYMAP": "LAYOUT_numpad_5x4",
"LAYOUT": "LAYOUT_numpad_5x4"
},
"layouts": {
diff --git a/keyboards/clueboard/2x1800/2018/2018.h b/keyboards/clueboard/2x1800/2018/2018.h
index c6e152ad441..6e2d3b3831b 100644
--- a/keyboards/clueboard/2x1800/2018/2018.h
+++ b/keyboards/clueboard/2x1800/2018/2018.h
@@ -13,9 +13,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef TWOX1800_H
-#define TWOX1800_H
-#include "quantum.h"
+#pragma once
-#endif
+#include "quantum.h"
diff --git a/keyboards/clueboard/2x1800/2018/info.json b/keyboards/clueboard/2x1800/2018/info.json
index 3028fd4c204..38e7421a141 100644
--- a/keyboards/clueboard/2x1800/2018/info.json
+++ b/keyboards/clueboard/2x1800/2018/info.json
@@ -41,7 +41,6 @@
"pid": "0x23A0"
},
"layout_aliases": {
- "KEYMAP": "LAYOUT_all",
"LAYOUT": "LAYOUT_all"
},
"layouts": {
diff --git a/keyboards/clueboard/2x1800/2021/info.json b/keyboards/clueboard/2x1800/2021/info.json
index 376b9151e54..088ce343db9 100644
--- a/keyboards/clueboard/2x1800/2021/info.json
+++ b/keyboards/clueboard/2x1800/2021/info.json
@@ -28,7 +28,6 @@
"pid": "0x23A0"
},
"layout_aliases": {
- "KEYMAP": "LAYOUT_all",
"LAYOUT": "LAYOUT_all"
},
"layouts": {
diff --git a/keyboards/clueboard/60/60.h b/keyboards/clueboard/60/60.h
index 0345f419fa4..9a019ccf6db 100644
--- a/keyboards/clueboard/60/60.h
+++ b/keyboards/clueboard/60/60.h
@@ -13,9 +13,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef CLUEBOARD60_H
-#define CLUEBOARD60_H
-#include "quantum.h"
+#pragma once
-#endif
+#include "quantum.h"
diff --git a/keyboards/clueboard/60/info.json b/keyboards/clueboard/60/info.json
index 695194e8270..1698d221d37 100644
--- a/keyboards/clueboard/60/info.json
+++ b/keyboards/clueboard/60/info.json
@@ -30,7 +30,6 @@
},
"community_layouts": ["60_ansi", "60_ansi_split_bs_rshift", "60_iso"],
"layout_aliases": {
- "KEYMAP": "LAYOUT_all",
"LAYOUT": "LAYOUT_all"
},
"layouts": {
diff --git a/keyboards/clueboard/66/rev1/info.json b/keyboards/clueboard/66/rev1/info.json
index c59cfa0b81e..6ff733b3dda 100644
--- a/keyboards/clueboard/66/rev1/info.json
+++ b/keyboards/clueboard/66/rev1/info.json
@@ -43,7 +43,6 @@
},
"community_layouts": ["66_ansi", "66_iso"],
"layout_aliases": {
- "KEYMAP": "LAYOUT_all",
"LAYOUT": "LAYOUT_all"
},
"layouts": {
diff --git a/keyboards/clueboard/66/rev2/info.json b/keyboards/clueboard/66/rev2/info.json
index 5ef47cca98a..27d293552db 100644
--- a/keyboards/clueboard/66/rev2/info.json
+++ b/keyboards/clueboard/66/rev2/info.json
@@ -43,7 +43,6 @@
},
"community_layouts": ["66_ansi", "66_iso"],
"layout_aliases": {
- "KEYMAP": "LAYOUT_all",
"LAYOUT": "LAYOUT_all"
},
"layouts": {
diff --git a/keyboards/clueboard/66/rev3/info.json b/keyboards/clueboard/66/rev3/info.json
index 1944331e2b9..0f2eada753e 100644
--- a/keyboards/clueboard/66/rev3/info.json
+++ b/keyboards/clueboard/66/rev3/info.json
@@ -43,7 +43,6 @@
},
"community_layouts": ["66_ansi", "66_iso"],
"layout_aliases": {
- "KEYMAP": "LAYOUT_all",
"LAYOUT": "LAYOUT_all"
},
"layouts": {
diff --git a/keyboards/clueboard/66/rev4/info.json b/keyboards/clueboard/66/rev4/info.json
index 1a81b3d088d..f1f1ae4dec5 100644
--- a/keyboards/clueboard/66/rev4/info.json
+++ b/keyboards/clueboard/66/rev4/info.json
@@ -41,7 +41,6 @@
},
"community_layouts": ["66_ansi", "66_iso"],
"layout_aliases": {
- "KEYMAP": "LAYOUT_all",
"LAYOUT": "LAYOUT_all"
},
"layouts": {
diff --git a/keyboards/clueboard/66_hotswap/gen1/config.h b/keyboards/clueboard/66_hotswap/gen1/config.h
index 7e53e0a011e..1e124745bd9 100644
--- a/keyboards/clueboard/66_hotswap/gen1/config.h
+++ b/keyboards/clueboard/66_hotswap/gen1/config.h
@@ -77,12 +77,38 @@
// 0b1110101 AD <-> SCL
// 0b1110110 AD <-> SDA
#define LED_DRIVER_ADDR_1 0b1110100
-#define I2C1_SCL 8
-#define I2C1_SDA 9
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
#define LED_DRIVER_COUNT 1
#define DRIVER_LED_TOTAL 71
+// LED Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
+#define ENABLE_LED_MATRIX_ALPHAS_MODS
+#define ENABLE_LED_MATRIX_BREATHING
+#define ENABLE_LED_MATRIX_BAND
+#define ENABLE_LED_MATRIX_BAND_PINWHEEL
+#define ENABLE_LED_MATRIX_BAND_SPIRAL
+#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_LED_MATRIX_CYCLE_OUT_IN
+#define ENABLE_LED_MATRIX_DUAL_BEACON
+#if defined(LED_MATRIX_KEYREACTIVE_ENABLED)
+# define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE
+# define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE
+# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS
+# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS
+# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_LED_MATRIX_SPLASH
+# define ENABLE_LED_MATRIX_MULTISPLASH
+#endif
+#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT
+#define ENABLE_LED_MATRIX_WAVE_UP_DOWN
+
#define AUDIO_PIN A5
#define AUDIO_PIN_ALT A4
#define AUDIO_PIN_ALT_AS_NEGATIVE
diff --git a/keyboards/clueboard/66_hotswap/gen1/gen1.c b/keyboards/clueboard/66_hotswap/gen1/gen1.c
index 8e3db70d071..66c40731ec8 100644
--- a/keyboards/clueboard/66_hotswap/gen1/gen1.c
+++ b/keyboards/clueboard/66_hotswap/gen1/gen1.c
@@ -16,7 +16,7 @@
#include "gen1.h"
#ifdef LED_MATRIX_ENABLE
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | LED address
diff --git a/keyboards/clueboard/66_hotswap/prototype/info.json b/keyboards/clueboard/66_hotswap/prototype/info.json
index 8f313739862..d3f81851f4d 100644
--- a/keyboards/clueboard/66_hotswap/prototype/info.json
+++ b/keyboards/clueboard/66_hotswap/prototype/info.json
@@ -43,7 +43,6 @@
},
"community_layouts": ["66_ansi"],
"layout_aliases": {
- "KEYMAP": "LAYOUT_all",
"LAYOUT": "LAYOUT_all"
},
"layouts": {
diff --git a/keyboards/cmm_studio/saka68/hotswap/rules.mk b/keyboards/cmm_studio/saka68/hotswap/rules.mk
index f1b8f4cf8b1..c38b5f2d031 100644
--- a/keyboards/cmm_studio/saka68/hotswap/rules.mk
+++ b/keyboards/cmm_studio/saka68/hotswap/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/cmm_studio/saka68/solder/rules.mk b/keyboards/cmm_studio/saka68/solder/rules.mk
index 077b060eea0..9310ae063da 100644
--- a/keyboards/cmm_studio/saka68/solder/rules.mk
+++ b/keyboards/cmm_studio/saka68/solder/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/coarse/cordillera/rules.mk b/keyboards/coarse/cordillera/rules.mk
index 57f80965eb0..d1c149794ea 100644
--- a/keyboards/coarse/cordillera/rules.mk
+++ b/keyboards/coarse/cordillera/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/coarse/ixora/rules.mk b/keyboards/coarse/ixora/rules.mk
index 339fdee920b..5026583b068 100644
--- a/keyboards/coarse/ixora/rules.mk
+++ b/keyboards/coarse/ixora/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER = stm32-dfu
# comment out to disable the options.
#
BACKLIGHT_ENABLE = no
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/coarse/vinta/rules.mk b/keyboards/coarse/vinta/rules.mk
index e887eb0981f..fd336cf0211 100644
--- a/keyboards/coarse/vinta/rules.mk
+++ b/keyboards/coarse/vinta/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER = stm32-dfu
# comment out to disable the options.
#
BACKLIGHT_ENABLE = no
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/coarse/vinta/vinta.h b/keyboards/coarse/vinta/vinta.h
index 03a815c0659..18f51cd434b 100644
--- a/keyboards/coarse/vinta/vinta.h
+++ b/keyboards/coarse/vinta/vinta.h
@@ -1,55 +1,49 @@
-#ifndef VINTA_H
-#define VINTA_H
-
-#define XXX KC_NO
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
#define LAYOUT_69_ansi( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, K2F, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3E, K3F, \
- K40, K41, K42, K45, K49, K4A, K4C, K4D, K4E, K4F \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, XXX, K2E, K2F }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, XXX, K3C, XXX, K3E, K3F }, \
- { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D, K4E, K4F } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2E, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3C, k3E, k3F, \
+ k40, k41, k42, k45, k49, k4A, k4C, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, XXX, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, XXX, k3C, XXX, k3E, k3F }, \
+ { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4A, XXX, k4C, k4D, k4E, k4F } \
}
#define LAYOUT_68_tada( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, K2F, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3E, K3F, \
- K40, K41, K42, K45, K49, K4A, K4C, K4D, K4E, K4F \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, XXX, K2E, K2F }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, XXX, K3C, XXX, K3E, K3F }, \
- { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, XXX, K4D, K4E, K4F } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2E, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3C, k3E, k3F, \
+ k40, k41, k42, k45, k49, k4A, k4C, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, XXX, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, XXX, k3C, XXX, k3E, k3F }, \
+ { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4A, XXX, XXX, k4D, k4E, k4F } \
}
#define LAYOUT_65_ansi_blocker( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, K2F, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3E, K3F, \
- K40, K41, K42, K45, K49, K4A, K4D, K4E, K4F \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, XXX, K2E, K2F }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, XXX, K3C, XXX, K3E, K3F }, \
- { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, XXX, K4D, K4E, K4F } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2E, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3C, k3E, k3F, \
+ k40, k41, k42, k45, k49, k4A, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, XXX, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, XXX, k3C, XXX, k3E, k3F }, \
+ { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4A, XXX, XXX, k4D, k4E, k4F } \
}
-
-#endif
diff --git a/keyboards/comet46/comet46.h b/keyboards/comet46/comet46.h
index c108d4193b3..094d960e200 100644
--- a/keyboards/comet46/comet46.h
+++ b/keyboards/comet46/comet46.h
@@ -1,22 +1,21 @@
-#ifndef COMET46_H
-#define COMET46_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11,\
- k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25,\
- k26, k27, k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42,\
- k43, k44, k45, k46, k47, k48 \
-) \
-{ \
- { k13, k01, k26, k12, k00, k11, k25, k42, k10, k24}, \
- { k03, k28, k14, k02, k27, k41, k09, k23, k38, k08}, \
- { k31, k16, k04, k29, k15, k22, k37, k07, k21, k36}, \
- { KC_NO, k32, k17, k05, k43, k48, k06, k20, k35, KC_NO }, \
- { KC_NO, k45, k33, k18, k44, k47, k19, k34, k46, KC_NO }, \
+ k04, k01, k13, k10, k22, k33, k36, k27, k19, k16, k08, k05, \
+ k03, k00, k12, k24, k21, k32, k43, k46, k37, k28, k25, k17, k09, k06, \
+ k02, k14, k11, k23, k20, k31, k42, k47, k38, k29, k26, k18, k15, k07, \
+ k34, k44, k41, k48, k45, k35 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
+ { XXX, k31, k32, k33, k34, k35, k36, k37, k38, XXX }, \
+ { XXX, k41, k42, k43, k44, k45, k46, k47, k48, XXX } \
}
-#endif
diff --git a/keyboards/comet46/config.h b/keyboards/comet46/config.h
index 5ae026f9238..067dabb1036 100644
--- a/keyboards/comet46/config.h
+++ b/keyboards/comet46/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -72,5 +71,3 @@ along with this program. If not, see .
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
-
-#endif
diff --git a/keyboards/comet46/i2c.h b/keyboards/comet46/i2c.h
index 47cf6bd1b2c..710662c7abd 100644
--- a/keyboards/comet46/i2c.h
+++ b/keyboards/comet46/i2c.h
@@ -1,5 +1,4 @@
-#ifndef I2C_H
-#define I2C_H
+#pragma once
#include
@@ -45,5 +44,3 @@ extern unsigned char i2c_readNak(void);
extern unsigned char i2c_read(unsigned char ack);
#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
-
-#endif
diff --git a/keyboards/compound/rules.mk b/keyboards/compound/rules.mk
index f2e5379ac15..3105d59b775 100644
--- a/keyboards/compound/rules.mk
+++ b/keyboards/compound/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/contra/config.h b/keyboards/contra/config.h
index 8dc565546be..499517f9848 100755
--- a/keyboards/contra/config.h
+++ b/keyboards/contra/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -44,5 +43,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/contra/contra.h b/keyboards/contra/contra.h
index 74aad77d0b0..27a8dd2956f 100755
--- a/keyboards/contra/contra.h
+++ b/keyboards/contra/contra.h
@@ -1,30 +1,27 @@
-#ifndef KB_H
-#define KB_H
+#pragma once
#include "quantum.h"
#define LAYOUT_ortho_4x12( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B } \
}
#define LAYOUT_planck_mit( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
- K300, K301, K302, K303, K304, K305, K307, K308, K309, K310, K311 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3A, k3B \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
- { K300, K301, K302, K303, K304, K305, K305, K307, K308, K309, K310, K311 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3A, k3B } \
}
-
-#endif
diff --git a/keyboards/contra/rules.mk b/keyboards/contra/rules.mk
index 91d887f15b3..72b4d86e97c 100755
--- a/keyboards/contra/rules.mk
+++ b/keyboards/contra/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/converter/a1200/miss1200/rules.mk b/keyboards/converter/a1200/miss1200/rules.mk
index cf8291d064d..4ccdf5bb3ef 100644
--- a/keyboards/converter/a1200/miss1200/rules.mk
+++ b/keyboards/converter/a1200/miss1200/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/converter/a1200/teensy2pp/rules.mk b/keyboards/converter/a1200/teensy2pp/rules.mk
index 29624324e89..5f74692015f 100644
--- a/keyboards/converter/a1200/teensy2pp/rules.mk
+++ b/keyboards/converter/a1200/teensy2pp/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/converter/adb_usb/adb.c b/keyboards/converter/adb_usb/adb.c
new file mode 100644
index 00000000000..28f14c9fe89
--- /dev/null
+++ b/keyboards/converter/adb_usb/adb.c
@@ -0,0 +1,531 @@
+/*
+Copyright 2011-19 Jun WAKO
+Copyright 2013 Shay Green
+
+This software is licensed with a Modified BSD License.
+All of this is supposed to be Free Software, Open Source, DFSG-free,
+GPL-compatible, and OK to use in both free and proprietary applications.
+Additions and corrections to this file are welcome.
+
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+* Neither the name of the copyright holders nor the names of
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include
+#include
+#include
+#include
+#include "adb.h"
+#include "print.h"
+
+// GCC doesn't inline functions normally
+#define data_lo() (ADB_DDR |= (1 << ADB_DATA_BIT))
+#define data_hi() (ADB_DDR &= ~(1 << ADB_DATA_BIT))
+#define data_in() (ADB_PIN & (1 << ADB_DATA_BIT))
+
+#ifdef ADB_PSW_BIT
+static inline void psw_lo(void);
+static inline void psw_hi(void);
+static inline bool psw_in(void);
+#endif
+
+static inline void attention(void);
+static inline void place_bit0(void);
+static inline void place_bit1(void);
+static inline void send_byte(uint8_t data);
+static inline uint16_t wait_data_lo(uint16_t us);
+static inline uint16_t wait_data_hi(uint16_t us);
+
+void adb_host_init(void) {
+ ADB_PORT &= ~(1 << ADB_DATA_BIT);
+ data_hi();
+#ifdef ADB_PSW_BIT
+ psw_hi();
+#endif
+}
+
+#ifdef ADB_PSW_BIT
+bool adb_host_psw(void) { return psw_in(); }
+#endif
+
+/*
+ * Don't call this in a row without the delay, otherwise it makes some of poor controllers
+ * overloaded and misses strokes. Recommended interval is 12ms.
+ *
+ * Thanks a lot, blargg!
+ *
+ *
+ */
+uint16_t adb_host_kbd_recv(void) { return adb_host_talk(ADB_ADDR_KEYBOARD, ADB_REG_0); }
+
+#ifdef ADB_MOUSE_ENABLE
+uint16_t adb_host_mouse_recv(void) { return adb_host_talk(ADB_ADDR_MOUSE, ADB_REG_0); }
+#endif
+
+// This sends Talk command to read data from register and returns length of the data.
+uint8_t adb_host_talk_buf(uint8_t addr, uint8_t reg, uint8_t *buf, uint8_t len) {
+ for (int8_t i = 0; i < len; i++) buf[i] = 0;
+
+ cli();
+ attention();
+ send_byte((addr << 4) | ADB_CMD_TALK | reg);
+ place_bit0(); // Stopbit(0)
+ // TODO: Service Request(Srq):
+ // Device holds low part of comannd stopbit for 140-260us
+ //
+ // Command:
+ // ......._ ______________________ ___ ............_ -------
+ // | | | | | | |
+ // Command | | | | | Data bytes | |
+ // ........|___| | 140-260 |__| |_............|___|
+ // |stop0 | Tlt Stop-to-Start |start1| |stop0 |
+ //
+ // Command without data:
+ // ......._ __________________________
+ // | |
+ // Command | |
+ // ........|___| | 140-260 |
+ // |stop0 | Tlt Stop-to-Start |
+ //
+ // Service Request:
+ // ......._ ______ ___ ............_ -------
+ // | 140-260 | | | | | |
+ // Command | Service Request | | | | Data bytes | |
+ // ........|___________________| |__| |_............|___|
+ // |stop0 | |start1| |stop0 |
+ // ......._ __________
+ // | 140-260 |
+ // Command | Service Request |
+ // ........|___________________|
+ // |stop0 |
+ // This can be happened?
+ // ......._ ______________________ ___ ............_ -----
+ // | | | | | | 140-260 |
+ // Command | | | | | Data bytes | Service Request |
+ // ........|___| | 140-260 |__| |_............|_________________|
+ // |stop0 | Tlt Stop-to-Start |start1| |stop0 |
+ //
+ // "Service requests are issued by the devices during a very specific time at the
+ // end of the reception of the command packet.
+ // If a device in need of service issues a service request, it must do so within
+ // the 65 µs of the Stop Bit’s low time and maintain the line low for a total of 300 µs."
+ //
+ // "A device sends a Service Request signal by holding the bus low during the low
+ // portion of the stop bit of any command or data transaction. The device must lengthen
+ // the stop by a minimum of 140 J.lS beyond its normal duration, as shown in Figure 8-15."
+ // http://ww1.microchip.com/downloads/en/AppNotes/00591b.pdf
+ if (!wait_data_hi(500)) { // Service Request(310us Adjustable Keyboard): just ignored
+ xprintf("R");
+ sei();
+ return 0;
+ }
+ if (!wait_data_lo(500)) { // Tlt/Stop to Start(140-260us)
+ sei();
+ return 0; // No data from device(not error);
+ }
+
+ // start bit(1)
+ if (!wait_data_hi(40)) {
+ xprintf("S");
+ sei();
+ return 0;
+ }
+ if (!wait_data_lo(100)) {
+ xprintf("s");
+ sei();
+ return 0;
+ }
+
+ uint8_t n = 0; // bit count
+ do {
+ //
+ // |<- bit_cell_max(130) ->|
+ // | |<- lo ->|
+ // | | |<-hi->|
+ // _______
+ // | | |
+ // | 130-lo | lo-hi |
+ // |________| |
+ //
+ uint8_t lo = (uint8_t)wait_data_hi(130);
+ if (!lo) goto error; // no more bit or after stop bit
+
+ uint8_t hi = (uint8_t)wait_data_lo(lo);
+ if (!hi) goto error; // stop bit extedned by Srq?
+
+ if (n / 8 >= len) continue; // can't store in buf
+
+ buf[n / 8] <<= 1;
+ if ((130 - lo) < (lo - hi)) {
+ buf[n / 8] |= 1;
+ }
+ } while (++n);
+
+error:
+ sei();
+ return n / 8;
+}
+
+uint16_t adb_host_talk(uint8_t addr, uint8_t reg) {
+ uint8_t len;
+ uint8_t buf[8];
+ len = adb_host_talk_buf(addr, reg, buf, 8);
+ if (len != 2) return 0;
+ return (buf[0] << 8 | buf[1]);
+}
+
+void adb_host_listen_buf(uint8_t addr, uint8_t reg, uint8_t *buf, uint8_t len) {
+ cli();
+ attention();
+ send_byte((addr << 4) | ADB_CMD_LISTEN | reg);
+ place_bit0(); // Stopbit(0)
+ // TODO: Service Request
+ _delay_us(200); // Tlt/Stop to Start
+ place_bit1(); // Startbit(1)
+ for (int8_t i = 0; i < len; i++) {
+ send_byte(buf[i]);
+ // xprintf("%02X ", buf[i]);
+ }
+ place_bit0(); // Stopbit(0);
+ sei();
+}
+
+void adb_host_listen(uint8_t addr, uint8_t reg, uint8_t data_h, uint8_t data_l) {
+ uint8_t buf[2] = {data_h, data_l};
+ adb_host_listen_buf(addr, reg, buf, 2);
+}
+
+void adb_host_flush(uint8_t addr) {
+ cli();
+ attention();
+ send_byte((addr << 4) | ADB_CMD_FLUSH);
+ place_bit0(); // Stopbit(0)
+ _delay_us(200); // Tlt/Stop to Start
+ sei();
+}
+
+// send state of LEDs
+void adb_host_kbd_led(uint8_t led) {
+ // Listen Register2
+ // upper byte: not used
+ // lower byte: bit2=ScrollLock, bit1=CapsLock, bit0=NumLock
+ adb_host_listen(ADB_ADDR_KEYBOARD, ADB_REG_2, 0, led & 0x07);
+}
+
+#ifdef ADB_PSW_BIT
+static inline void psw_lo() {
+ ADB_DDR |= (1 << ADB_PSW_BIT);
+ ADB_PORT &= ~(1 << ADB_PSW_BIT);
+}
+static inline void psw_hi() {
+ ADB_PORT |= (1 << ADB_PSW_BIT);
+ ADB_DDR &= ~(1 << ADB_PSW_BIT);
+}
+static inline bool psw_in() {
+ ADB_PORT |= (1 << ADB_PSW_BIT);
+ ADB_DDR &= ~(1 << ADB_PSW_BIT);
+ return ADB_PIN & (1 << ADB_PSW_BIT);
+}
+#endif
+
+static inline void attention(void) {
+ data_lo();
+ _delay_us(800 - 35); // bit1 holds lo for 35 more
+ place_bit1();
+}
+
+static inline void place_bit0(void) {
+ data_lo();
+ _delay_us(65);
+ data_hi();
+ _delay_us(35);
+}
+
+static inline void place_bit1(void) {
+ data_lo();
+ _delay_us(35);
+ data_hi();
+ _delay_us(65);
+}
+
+static inline void send_byte(uint8_t data) {
+ for (int i = 0; i < 8; i++) {
+ if (data & (0x80 >> i))
+ place_bit1();
+ else
+ place_bit0();
+ }
+}
+
+// These are carefully coded to take 6 cycles of overhead.
+// inline asm approach became too convoluted
+static inline uint16_t wait_data_lo(uint16_t us) {
+ do {
+ if (!data_in()) break;
+ _delay_us(1 - (6 * 1000000.0 / F_CPU));
+ } while (--us);
+ return us;
+}
+
+static inline uint16_t wait_data_hi(uint16_t us) {
+ do {
+ if (data_in()) break;
+ _delay_us(1 - (6 * 1000000.0 / F_CPU));
+ } while (--us);
+ return us;
+}
+
+/*
+ADB Protocol
+============
+
+Resources
+---------
+ADB - The Untold Story: Space Aliens Ate My Mouse
+ http://developer.apple.com/legacy/mac/library/#technotes/hw/hw_01.html
+ADB Manager
+ http://developer.apple.com/legacy/mac/library/documentation/mac/pdf/Devices/ADB_Manager.pdf
+ Service request(5-17)
+Apple IIgs Hardware Reference Second Edition [Chapter6 p121]
+ ftp://ftp.apple.asimov.net/pub/apple_II/documentation/Apple%20IIgs%20Hardware%20Reference.pdf
+ADB Keycode
+ http://72.0.193.250/Documentation/macppc/adbkeycodes/
+ http://m0115.web.fc2.com/m0115.jpg
+ [Inside Macintosh volume V, pages 191-192]
+ http://www.opensource.apple.com/source/IOHIDFamily/IOHIDFamily-421.18.3/IOHIDFamily/Cosmo_USB2ADB.c
+ADB Signaling
+ http://kbdbabel.sourceforge.net/doc/kbd_signaling_pcxt_ps2_adb.pdf
+ADB Overview & History
+ http://en.wikipedia.org/wiki/Apple_Desktop_Bus
+Microchip Application Note: ADB device(with code for PIC16C)
+ http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en011062
+AVR ATtiny2131 ADB to PS/2 converter(Japanese)
+ http://hp.vector.co.jp/authors/VA000177/html/KeyBoardA5DEA5CBA5A2II.html
+
+
+Pinouts
+-------
+ ADB female socket from the front:
+ __________
+ | | <--- top
+ | 4o o3 |
+ |2o o1|
+ | == |
+ |________| <--- bottom
+ | | <--- 4pins
+
+
+ ADB female socket from bottom:
+
+ ========== <--- front
+ | |
+ | |
+ |2o o1|
+ |4o o3|
+ ---------- <--- back
+
+ 1: Data
+ 2: Power SW(low when press Power key)
+ 3: Vcc(5V)
+ 4: GND
+
+
+Commands
+--------
+ ADB command is 1byte and consists of 4bit-address, 2bit-command
+ type and 2bit-register. The commands are always sent by Host.
+
+ Command format:
+ 7 6 5 4 3 2 1 0
+ | | | |------------ address
+ | |-------- command type
+ | |---- register
+
+ bits commands
+ ------------------------------------------------------
+ - - - - 0 0 0 0 Send Reset(reset all devices)
+ A A A A 0 0 0 1 Flush(reset a device)
+ - - - - 0 0 1 0 Reserved
+ - - - - 0 0 1 1 Reserved
+ - - - - 0 1 - - Reserved
+ A A A A 1 0 R R Listen(write to a device)
+ A A A A 1 1 R R Talk(read from a device)
+
+ The command to read keycodes from keyboard is 0x2C which
+ consist of keyboard address 2 and Talk against register 0.
+
+ Address:
+ 2: keyboard
+ 3: mice
+
+ Registers:
+ 0: application(keyboard uses this to store its data.)
+ 1: application
+ 2: application(keyboard uses this for LEDs and state of modifiers)
+ 3: status and command
+
+
+Communication
+-------------
+ This is a minimum information for keyboard communication.
+ See "Resources" for detail.
+
+ Signaling:
+
+ ~~~~____________~~||||||||||||__~~~~~_~~|||||||||||||||__~~~~
+
+ |800us | |7 Command 0| | | |15-64 Data 0|Stopbit(0)
+ +Attention | | | +Startbit(1)
+ +Startbit(1) | +Tlt(140-260us)
+ +stopbit(0)
+
+ Bit cells:
+
+ bit0: ______~~~
+ 65 :35us
+
+ bit1: ___~~~~~~
+ 35 :65us
+
+ bit0 low time: 60-70% of bit cell(42-91us)
+ bit1 low time: 30-40% of bit cell(21-52us)
+ bit cell time: 70-130us
+ [from Apple IIgs Hardware Reference Second Edition]
+
+ Criterion for bit0/1:
+ After 55us if line is low/high then bit is 0/1.
+
+ Attention & start bit:
+ Host asserts low in 560-1040us then places start bit(1).
+
+ Tlt(Stop to Start):
+ Bus stays high in 140-260us then device places start bit(1).
+
+ Global reset:
+ Host asserts low in 2.8-5.2ms. All devices are forced to reset.
+
+ Service request from device(Srq):
+ Device can request to send at commad(Global only?) stop bit.
+ Requesting device keeps low for 140-260us at stop bit of command.
+
+
+Keyboard Data(Register0)
+ This 16bit data can contains two keycodes and two released flags.
+ First keycode is palced in upper byte. When one keyocode is sent,
+ lower byte is 0xFF.
+ Release flag is 1 when key is released.
+
+ 1514 . . . . . 8 7 6 . . . . . 0
+ | | | | | | | | | +-+-+-+-+-+-+- Keycode2
+ | | | | | | | | +--------------- Released2(1 when the key is released)
+ | +-+-+-+-+-+-+----------------- Keycode1
+ +------------------------------- Released1(1 when the key is released)
+
+ Keycodes:
+ Scancode consists of 7bit keycode and 1bit release flag.
+ Device can send two keycodes at once. If just one keycode is sent
+ keycode1 contains it and keyocode2 is 0xFF.
+
+ Power switch:
+ You can read the state from PSW line(active low) however
+ the switch has a special scancode 0x7F7F, so you can
+ also read from Data line. It uses 0xFFFF for release scancode.
+
+Keyboard LEDs & state of keys(Register2)
+ This register hold current state of three LEDs and nine keys.
+ The state of LEDs can be changed by sending Listen command.
+
+ 1514 . . . . . . 7 6 5 . 3 2 1 0
+ | | | | | | | | | | | | | | | +- LED1(NumLock)
+ | | | | | | | | | | | | | | +--- LED2(CapsLock)
+ | | | | | | | | | | | | | +----- LED3(ScrollLock)
+ | | | | | | | | | | +-+-+------- Reserved
+ | | | | | | | | | +------------- ScrollLock
+ | | | | | | | | +--------------- NumLock
+ | | | | | | | +----------------- Apple/Command
+ | | | | | | +------------------- Option
+ | | | | | +--------------------- Shift
+ | | | | +----------------------- Control
+ | | | +------------------------- Reset/Power
+ | | +--------------------------- CapsLock
+ | +----------------------------- Delete
+ +------------------------------- Reserved
+
+Address, Handler ID and bits(Register3)
+ 1514131211 . . 8 7 . . . . . . 0
+ | | | | | | | | | | | | | | | |
+ | | | | | | | | +-+-+-+-+-+-+-+- Handler ID
+ | | | | +-+-+-+----------------- Address
+ | | | +------------------------- 0
+ | | +--------------------------- Service request enable(1 = enabled)
+ | +----------------------------- Exceptional event(alwyas 1 if not used)
+ +------------------------------- 0
+
+ADB Bit Cells
+ bit cell time: 70-130us
+ low part of bit0: 60-70% of bit cell
+ low part of bit1: 30-40% of bit cell
+
+ bit cell time 70us 130us
+ --------------------------------------------
+ low part of bit0 42-49 78-91
+ high part of bit0 21-28 39-52
+ low part of bit1 21-28 39-52
+ high part of bit1 42-49 78-91
+
+
+ bit0:
+ 70us bit cell:
+ ____________~~~~~~
+ 42-49 21-28
+
+ 130us bit cell:
+ ____________~~~~~~
+ 78-91 39-52
+
+ bit1:
+ 70us bit cell:
+ ______~~~~~~~~~~~~
+ 21-28 42-49
+
+ 130us bit cell:
+ ______~~~~~~~~~~~~
+ 39-52 78-91
+
+ [from Apple IIgs Hardware Reference Second Edition]
+
+Keyboard Handle ID
+ Apple Standard Keyboard M0116: 0x01
+ Apple Extended Keyboard M0115: 0x02
+ Apple Extended Keyboard II M3501: 0x02
+ Apple Adjustable Keybaord: 0x10
+
+ http://lxr.free-electrons.com/source/drivers/macintosh/adbhid.c?v=4.4#L802
+
+END_OF_ADB
+*/
diff --git a/tmk_core/protocol/adb.h b/keyboards/converter/adb_usb/adb.h
similarity index 100%
rename from tmk_core/protocol/adb.h
rename to keyboards/converter/adb_usb/adb.h
diff --git a/keyboards/converter/adb_usb/adb_usb.h b/keyboards/converter/adb_usb/adb_usb.h
index 3db303b039f..ddbbd715649 100644
--- a/keyboards/converter/adb_usb/adb_usb.h
+++ b/keyboards/converter/adb_usb/adb_usb.h
@@ -17,11 +17,12 @@ along with this program. If not, see .
Ported to QMK by Peter Roe
*/
-#ifndef ADB_USB_H
-#define ADB_USB_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* M0115/M3501 Apple Extended Keyboard ANSI
* ,---. ,---------------. ,---------------. ,---------------. ,-----------. ,---.
* |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |Pwr|
@@ -39,29 +40,29 @@ Ported to QMK by Peter Roe
* `-----------------------------------------------------------' `-----------' `---------------'
*/
#define LAYOUT_ext_ansi( \
- K35, K7A,K78,K63,K76,K60,K61,K62,K64,K65,K6D,K67,K6F, K69,K6B,K71, K7F, \
- K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K72,K73,K74, K47,K51,K4B,K43, \
- K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E,K2A, K75,K77,K79, K59,K5B,K5C,K4E, \
- K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27, K24, K56,K57,K58,K45, \
- K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C, K7B, K3E, K53,K54,K55, \
- K36,K3A,K37, K31, K7C,K7D, K3B,K3D,K3C, K52, K41,K4C \
+ k35, k7A, k78, k63, k76, k60, k61, k62, k64, k65, k6D, k67, k6F, k69, k6B, k71, k7F, \
+ k32, k12, k13, k14, k15, k17, k16, k1A, k1C, k19, k1D, k1B, k18, k33, k72, k73, k74, k47, k51, k4B, k43, \
+ k30, k0C, k0D, k0E, k0F, k11, k10, k20, k22, k1F, k23, k21, k1E, k2A, k75, k77, k79, k59, k5B, k5C, k4E, \
+ k39, k00, k01, k02, k03, k05, k04, k26, k28, k25, k29, k27, k24, k56, k57, k58, k45, \
+ k38, k06, k07, k08, k09, k0B, k2D, k2E, k2B, k2F, k2C, k7B, k3E, k53, k54, k55,\
+ k36, k3A, k37, k31, k7C, k7D, k3B, k3D, k3C, k52, k41, k4C \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K08, K09, KC_NO, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27 }, \
- { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
- { K30, K31, K32, K33, KC_NO, K35, K36, K37 }, \
- { K38, K39, K3A, K3B, K3C, K3D, K3E, KC_NO, }, \
- { KC_NO, K41, KC_NO, K43, KC_NO, K45, KC_NO, K47 }, \
- { KC_NO, KC_NO, KC_NO, K4B, K4C, KC_NO, K4E, KC_NO, }, \
- { KC_NO, K51, K52, K53, K54, K55, K56, K57 }, \
- { K58, K59, KC_NO, K5B, K5C, KC_NO, KC_NO, KC_NO, }, \
- { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \
- { KC_NO, K69, KC_NO, K6B, KC_NO, K6D, KC_NO, K6F }, \
- { KC_NO, K71, K72, K73, K74, K75, K76, K77 }, \
- { K78, K79, K7A, K7B, K7C, K7D, KC_NO, K7F } \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k08, k09, XXX, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, XXX, k35, k36, k37 }, \
+ { k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { XXX, k41, XXX, k43, XXX, k45, XXX, k47 }, \
+ { XXX, XXX, XXX, k4B, k4C, XXX, k4E, XXX }, \
+ { XXX, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k58, k59, XXX, k5B, k5C, XXX, XXX, XXX }, \
+ { k60, k61, k62, k63, k64, k65, XXX, k67 }, \
+ { XXX, k69, XXX, k6B, XXX, k6D, XXX, k6F }, \
+ { XXX, k71, k72, k73, k74, k75, k76, k77 }, \
+ { k78, k79, k7A, k7B, k7C, k7D, XXX, k7F } \
}
/* M0116 Apple Standard Keyboard ANSI
@@ -81,29 +82,27 @@ Ported to QMK by Peter Roe
* +---------------------------------------------------------+ +-------+---+---+
*/
#define LAYOUT_m0116_ansi( \
- K7F, \
- K35,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K47,K51,K4B,K43, \
- K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E, K59,K5B,K5C,K45, \
- K36,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27, K24, K56,K57,K58,K4E, \
- K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C, K7B, K53,K54,K55, \
- K39,K3A,K37,K32, K31, K2A,K3B,K3C,K3D,K3E, K52, K41,K4C \
+ k7F, \
+ k35, k12, k13, k14, k15, k17, k16, k1A, k1C, k19, k1D, k1B, k18, k33, k47, k51, k4B, k43, \
+ k30, k0C, k0D, k0E, k0F, k11, k10, k20, k22, k1F, k23, k21, k1E, k59, k5B, k5C, k45, \
+ k36, k00, k01, k02, k03, k05, k04, k26, k28, k25, k29, k27, k24, k56, k57, k58, k4E, \
+ k38, k06, k07, k08, k09, k0B, k2D, k2E, k2B, k2F, k2C, k7B, k53, k54, k55, \
+ k39, k3A, k37, k32, k31, k2A, k3B, k3C, k3D, k3E, k52, k41, k4C \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K08, K09, KC_NO, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27 }, \
- { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
- { K30, K31, K32, K33, KC_NO, K35, K36, K37 }, \
- { K38, K39, K3A, K3B, K3C, K3D, K3E, KC_NO }, \
- { KC_NO, K41, KC_NO, K43, KC_NO, K45, KC_NO, K47 }, \
- { KC_NO, KC_NO, KC_NO, K4B, K4C, KC_NO, K4E, KC_NO }, \
- { KC_NO, K51, K52, K53, K54, K55, K56, K57 }, \
- { K58, K59, KC_NO, K5B, K5C, KC_NO, KC_NO, KC_NO }, \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { KC_NO, KC_NO, KC_NO, K7B, KC_NO, KC_NO, KC_NO, K7F } \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k08, k09, XXX, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, XXX, k35, k36, k37 }, \
+ { k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { XXX, k41, XXX, k43, XXX, k45, XXX, k47 }, \
+ { XXX, XXX, XXX, k4B, k4C, XXX, k4E, XXX }, \
+ { XXX, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k58, k59, XXX, k5B, k5C, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, k7B, XXX, XXX, XXX, k7F } \
}
-
-#endif
diff --git a/keyboards/converter/adb_usb/matrix.c b/keyboards/converter/adb_usb/matrix.c
index 9e5399de5d6..e6a4921960e 100644
--- a/keyboards/converter/adb_usb/matrix.c
+++ b/keyboards/converter/adb_usb/matrix.c
@@ -31,6 +31,10 @@ Ported to QMK by Peter Roe
#include "led.h"
#include "timer.h"
+#ifndef ADB_MOUSE_MAXACC
+# define ADB_MOUSE_MAXACC 8
+#endif
+
static bool is_iso_layout = false;
// matrix state buffer(1:on, 0:off)
@@ -84,6 +88,10 @@ void matrix_init(void)
static report_mouse_t mouse_report = {};
+void housekeeping_task_kb(void) {
+ adb_mouse_task();
+}
+
void adb_mouse_task(void)
{
uint16_t codes;
diff --git a/keyboards/converter/adb_usb/rules.mk b/keyboards/converter/adb_usb/rules.mk
index 56967770b3b..8f4649f5566 100644
--- a/keyboards/converter/adb_usb/rules.mk
+++ b/keyboards/converter/adb_usb/rules.mk
@@ -16,7 +16,9 @@ NKRO_ENABLE = no # USB Nkey Rollover - not yet supported in LUFA
EXTRAKEY_ENABLE = yes
USB_HID_ENABLE = yes
BACKLIGHT_ENABLE = no
-#BLUETOOTH = AdafruitBLE # For Adafruit Feather 32U4 BLE support, uncomment this line
CUSTOM_MATRIX = yes
SRC = matrix.c adb.c led.c
+
+# ADB_MOUSE_ENABLE
+# OPT_DEFS += -DADB_MOUSE_ENABLE -DMOUSE_ENABLE
diff --git a/keyboards/converter/ibm_terminal/config.h b/keyboards/converter/ibm_terminal/config.h
index 5d8e5f8135b..2cd36c5fb0a 100644
--- a/keyboards/converter/ibm_terminal/config.h
+++ b/keyboards/converter/ibm_terminal/config.h
@@ -16,9 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
-
+#pragma once
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6535
@@ -47,15 +45,8 @@ along with this program. If not, see .
*/
#ifdef PS2_USE_USART
/* XCK for clock line */
-#define PS2_CLOCK_PORT PORTD
-#define PS2_CLOCK_PIN PIND
-#define PS2_CLOCK_DDR DDRD
-#define PS2_CLOCK_BIT 5
-/* RXD for data line */
-#define PS2_DATA_PORT PORTD
-#define PS2_DATA_PIN PIND
-#define PS2_DATA_DDR DDRD
-#define PS2_DATA_BIT 2
+#define PS2_CLOCK_PIN D5
+#define PS2_DATA_PIN D2
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
/* set DDR of CLOCK as input to be slave */
@@ -95,15 +86,8 @@ along with this program. If not, see .
*/
#ifdef PS2_USE_INT
/* uses INT1 for clock line(ATMega32U4) */
-#define PS2_CLOCK_PORT PORTD
-#define PS2_CLOCK_PIN PIND
-#define PS2_CLOCK_DDR DDRD
-#define PS2_CLOCK_BIT 1
-
-#define PS2_DATA_PORT PORTD
-#define PS2_DATA_PIN PIND
-#define PS2_DATA_DDR DDRD
-#define PS2_DATA_BIT 0
+#define PS2_CLOCK_PIN D1
+#define PS2_DATA_PIN D0
#define PS2_INT_INIT() do { \
EICRA |= ((1<.
* PS/2 Busywait configuration
*/
#ifdef PS2_USE_BUSYWAIT
-#define PS2_CLOCK_PORT PORTD
-#define PS2_CLOCK_PIN PIND
-#define PS2_CLOCK_DDR DDRD
-#define PS2_CLOCK_BIT 1
-
-#define PS2_DATA_PORT PORTD
-#define PS2_DATA_PIN PIND
-#define PS2_DATA_DDR DDRD
-#define PS2_DATA_BIT 0
-#endif
-
+#define PS2_CLOCK_PIN D1
+#define PS2_DATA_PIN D0
#endif
diff --git a/keyboards/converter/ibm_terminal/ibm_terminal.h b/keyboards/converter/ibm_terminal/ibm_terminal.h
index adf048206e9..ce50e5f437c 100644
--- a/keyboards/converter/ibm_terminal/ibm_terminal.h
+++ b/keyboards/converter/ibm_terminal/ibm_terminal.h
@@ -1,8 +1,9 @@
-#ifndef IBM_TERMINAL_H
-#define IBM_TERMINAL_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
void matrix_init_user(void);
/*
@@ -20,63 +21,61 @@ void matrix_init_user(void);
* +---------+
*/
#define LAYOUT( \
- K08,K10,K18,K20,K28,K30,K38,K40,K48,K50,K57,K5F, \
- K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E, \
- \
- K05,K06, K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K5D,K66, K67,K6E,K6F, K76,K77,K7E,K84, \
- K04,K0C, K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B, K5C, K64,K65,K6D, K6C,K75,K7D,K7C, \
- K03,K0B, K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K53,K5A, K63, K6B,K73,K74,K7B, \
- K83,K0A, K12,K13,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K51,K59, K61,K62,K6A, K69,K72,K7A,K79, \
- K01,K09, K11, K19, K29, K39, K58, K60, K68,K70,K71,K78 \
+ k08, k10, k18, k20, k28, k30, k38, k40, k48, k50, k57, k5F, \
+ k07, k0F, k17, k1F, k27, k2F, k37, k3F, k47, k4F, k56, k5E, \
+\
+ k05, k06, k0E, k16, k1E, k26, k25, k2E, k36, k3D, k3E, k46, k45, k4E, k55, k5D, k66, k67, k6E, k6F, k76, k77, k7E, k84, \
+ k04, k0C, k0D, k15, k1D, k24, k2D, k2C, k35, k3C, k43, k44, k4D, k54, k5B, k5C, k64, k65, k6D, k6C, k75, k7D, k7C, \
+ k03, k0B, k14, k1C, k1B, k23, k2B, k34, k33, k3B, k42, k4B, k4C, k52, k53, k5A, k63, k6B, k73, k74, k7B, \
+ k83, k0A, k12, k13, k1A, k22, k21, k2A, k32, k31, k3A, k41, k49, k4A, k51, k59, k61, k62, k6A, k69, k72, k7A, k79, \
+ k01, k09, k11, k19, k29, k39, k58, k60, k68, k70, k71, k78 \
) { \
- { KC_NO, K01, KC_NO, K03, K04, K05, K06, K07 }, \
- { K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27 }, \
- { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
- { K30, K31, K32, K33, K34, K35, K36, K37 }, \
- { K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
- { K40, K41, K42, K43, K44, K45, K46, K47 }, \
- { K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \
- { K50, K51, K52, K53, K54, K55, K56, K57 }, \
- { K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, \
- { K60, K61, K62, K63, K64, K65, K66, K67 }, \
- { K68, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \
- { K70, K71, K72, K73, K74, K75, K76, K77 }, \
- { K78, K79, K7A, K7B, K7C, K7D, K7E, KC_NO }, \
- { KC_NO, KC_NO, KC_NO, K83, K84, KC_NO, KC_NO, KC_NO } \
+ { XXX, k01, XXX, k03, k04, k05, k06, k07 }, \
+ { k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47 }, \
+ { k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k58, k59, k5A, k5B, k5C, k5D, k5E, k5F }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { k68, k69, k6A, k6B, k6C, k6D, k6E, k6F }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77 }, \
+ { k78, k79, k7A, k7B, k7C, k7D, k7E, XXX }, \
+ { XXX, XXX, XXX, k83, k84, XXX, XXX, XXX } \
}
/*
* IBM Terminal keyboard 1399625, 101-key
*/
#define LAYOUT_101( \
- K08, K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E, K57,K5F,K62, \
- \
- K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, K67,K6E,K6F, K76,K77,K7E,K84, \
- K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,K5C, K64,K65,K6D, K6C,K75,K7D, \
- K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K5A, K6B,K73,K74,K7C, \
- K12, K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, K63, K69,K72,K7A, \
- K11, K19, K29, K39, K58, K61,K60,K6A, K70, K71,K79 \
+ k08, k07, k0F, k17, k1F, k27, k2F, k37, k3F, k47, k4F, k56, k5E, k57, k5F, k62, \
+\
+ k0E, k16, k1E, k26, k25, k2E, k36, k3D, k3E, k46, k45, k4E, k55, k66, k67, k6E, k6F, k76, k77, k7E, k84, \
+ k0D, k15, k1D, k24, k2D, k2C, k35, k3C, k43, k44, k4D, k54, k5B, k5C, k64, k65, k6D, k6C, k75, k7D, \
+ k14, k1C, k1B, k23, k2B, k34, k33, k3B, k42, k4B, k4C, k52, k5A, k6B, k73, k74, k7C, \
+ k12, k1A, k22, k21, k2A, k32, k31, k3A, k41, k49, k4A, k59, k63, k69, k72, k7A, \
+ k11, k19, k29, k39, k58, k61, k60, k6A, k70, k71, k79 \
) { \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K07 }, \
- { K08, KC_NO, KC_NO, KC_NO, KC_NO, K0D, K0E, K0F }, \
- { KC_NO, K11, K12, KC_NO, K14, K15, K16, K17 }, \
- { KC_NO, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { KC_NO, K21, K22, K23, K24, K25, K26, K27 }, \
- { KC_NO, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
- { KC_NO, K31, K32, K33, K34, K35, K36, K37 }, \
- { KC_NO, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
- { KC_NO, K41, K42, K43, K44, K45, K46, K47 }, \
- { KC_NO, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \
- { KC_NO, KC_NO, K52, KC_NO, K54, K55, K56, K57 }, \
- { K58, K59, K5A, K5B, K5C, KC_NO, K5E, K5F }, \
- { K60, K61, K62, K63, K64, K65, K66, K67 }, \
- { KC_NO, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \
- { K70, K71, K72, K73, K74, K75, K76, K77 }, \
- { KC_NO, K79, K7A, KC_NO, K7C, K7D, K7E, KC_NO }, \
- { KC_NO, KC_NO, KC_NO, KC_NO, K84, KC_NO, KC_NO, KC_NO } \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, k07 }, \
+ { k08, XXX, XXX, XXX, XXX, k0D, k0E, k0F }, \
+ { XXX, k11, k12, XXX, k14, k15, k16, k17 }, \
+ { XXX, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { XXX, k21, k22, k23, k24, k25, k26, k27 }, \
+ { XXX, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { XXX, k31, k32, k33, k34, k35, k36, k37 }, \
+ { XXX, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { XXX, k41, k42, k43, k44, k45, k46, k47 }, \
+ { XXX, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
+ { XXX, XXX, k52, XXX, k54, k55, k56, k57 }, \
+ { k58, k59, k5A, k5B, k5C, XXX, k5E, k5F }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { XXX, k69, k6A, k6B, k6C, k6D, k6E, k6F }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77 }, \
+ { XXX, k79, k7A, XXX, k7C, k7D, k7E, XXX }, \
+ { XXX, XXX, XXX, XXX, k84, XXX, XXX, XXX } \
}
-
-#endif
diff --git a/tmk_core/protocol/m0110.c b/keyboards/converter/m0110_usb/m0110.c
similarity index 100%
rename from tmk_core/protocol/m0110.c
rename to keyboards/converter/m0110_usb/m0110.c
diff --git a/tmk_core/protocol/m0110.h b/keyboards/converter/m0110_usb/m0110.h
similarity index 100%
rename from tmk_core/protocol/m0110.h
rename to keyboards/converter/m0110_usb/m0110.h
diff --git a/keyboards/converter/m0110_usb/m0110_usb.h b/keyboards/converter/m0110_usb/m0110_usb.h
index 88e74024fc8..944296afdc7 100644
--- a/keyboards/converter/m0110_usb/m0110_usb.h
+++ b/keyboards/converter/m0110_usb/m0110_usb.h
@@ -16,12 +16,12 @@ along with this program. If not, see .
Ported to QMK by Techsock
*/
-#ifndef M0110_USB_H
-#define M0110_USB_H
-#endif
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* Common layout for M0110 and M0110A
* This keymap works with both keyboards. As you can see, the M0110A is
* a superset of M0110 keyboard, only one exception is 'Enter'(34) of M0110
@@ -67,26 +67,26 @@ Ported to QMK by Techsock
* Two right and left keys of 38 and 3A are identical, you cannot discriminate those two.
*/
#define LAYOUT_ansi( \
- K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K47,K68,K6D,K62, \
- K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E, K59,K5B,K5C,K4E, \
- K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27, K24, K56,K57,K58,K66, \
- K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C, K4D, K53,K54,K55,K4C, \
- K3A,K37, K31, K34,K2A,K46,K42,K48, K52, K41 \
+ K32, K12, K13, K14, K15, K17, K16, K1A, K1C, K19, K1D, K1B, K18, K33, K47, K68, K6D, K62, \
+ K30, K0C, K0D, K0E, K0F, K11, K10, K20, K22, K1F, K23, K21, K1E, K59, K5B, K5C, K4E, \
+ K39, K00, K01, K02, K03, K05, K04, K26, K28, K25, K29, K27, K24, K56, K57, K58, K66, \
+ K38, K06, K07, K08, K09, K0B, K2D, K2E, K2B, K2F, K2C, K4D, K53, K54, K55, K4C, \
+ K3A, K37, K31, K34, K2A, K46, K42, K48, K52, K41 \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K08, K09, KC_NO, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27 }, \
- { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
- { K30, K31, K32, K33, K34, KC_NO, KC_NO, K37 }, \
- { K38, K39, K3A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { KC_NO, K41, K42, KC_NO, KC_NO, KC_NO, K46, K47 }, \
- { K48, KC_NO, KC_NO, KC_NO, K4C, K4D, K4E, KC_NO }, \
- { KC_NO, KC_NO, K52, K53, K54, K55, K56, K57 }, \
- { K58, K59, KC_NO, K5B, K5C, KC_NO, KC_NO, KC_NO }, \
- { KC_NO, KC_NO, K62, KC_NO, KC_NO, KC_NO, K66, KC_NO }, \
- { K68, KC_NO, KC_NO, KC_NO, KC_NO, K6D, KC_NO, KC_NO }, \
+ { K00, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K08, K09, XXX, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27 }, \
+ { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, XXX, XXX, K37 }, \
+ { K38, K39, K3A, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, K41, K42, XXX, XXX, XXX, K46, K47 }, \
+ { K48, XXX, XXX, XXX, K4C, K4D, K4E, XXX }, \
+ { XXX, XXX, K52, K53, K54, K55, K56, K57 }, \
+ { K58, K59, XXX, K5B, K5C, XXX, XXX, XXX }, \
+ { XXX, XXX, K62, XXX, XXX, XXX, K66, XXX }, \
+ { K68, XXX, XXX, XXX, XXX, K6D, XXX, XXX } \
}
/* International keyboard layout for M0110 + M0120
@@ -108,24 +108,24 @@ Ported to QMK by Techsock
* Two right and left keys of 38 and 3A are identical, you cannot discriminate those two.
*/
#define LAYOUT_iso( \
- K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K47,K68,K6D,K62, \
- K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E,K2A, K59,K5B,K5C,K4E, \
- K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27,K24, K56,K57,K58,K66, \
- K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C,K0A, K53,K54,K55,K4C, \
- K3A,K37, K34, K31, K52, K41 \
+ K32, K12, K13, K14, K15, K17, K16, K1A, K1C, K19, K1D, K1B, K18, K33, K47, K68, K6D, K62, \
+ K30, K0C, K0D, K0E, K0F, K11, K10, K20, K22, K1F, K23, K21, K1E, K2A, K59, K5B, K5C, K4E, \
+ K39, K00, K01, K02, K03, K05, K04, K26, K28, K25, K29, K27, K24, K56, K57, K58, K66, \
+ K38, K06, K07, K08, K09, K0B, K2D, K2E, K2B, K2F, K2C, K0A, K53, K54, K55, K4C, \
+ K3A, K37, K34, K31, K52, K41 \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27 }, \
- { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
- { K30, K31, K32, K33, K34, KC_NO, KC_NO, K37 }, \
- { K38, K39, K3A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { KC_NO, K41, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K47 }, \
- { KC_NO, KC_NO, KC_NO, KC_NO, K4C, KC_NO, K4E, KC_NO }, \
- { KC_NO, KC_NO, K52, K53, K54, K55, K56, K57 }, \
- { K58, K59, KC_NO, K5B, K5C, KC_NO, KC_NO, KC_NO }, \
- { KC_NO, KC_NO, K62, KC_NO, KC_NO, KC_NO, K66, KC_NO }, \
- { K68, KC_NO, KC_NO, KC_NO, KC_NO, K6D, KC_NO, KC_NO }, \
+ { K00, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27 }, \
+ { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, XXX, XXX, K37 }, \
+ { K38, K39, K3A, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, K41, XXX, XXX, XXX, XXX, XXX, K47 }, \
+ { XXX, XXX, XXX, XXX, K4C, XXX, K4E, XXX }, \
+ { XXX, XXX, K52, K53, K54, K55, K56, K57 }, \
+ { K58, K59, XXX, K5B, K5C, XXX, XXX, XXX }, \
+ { XXX, XXX, K62, XXX, XXX, XXX, K66, XXX }, \
+ { K68, XXX, XXX, XXX, XXX, K6D, XXX, XXX } \
}
diff --git a/keyboards/converter/m0110_usb/rules.mk b/keyboards/converter/m0110_usb/rules.mk
index f59530ce461..288b1729f03 100644
--- a/keyboards/converter/m0110_usb/rules.mk
+++ b/keyboards/converter/m0110_usb/rules.mk
@@ -19,7 +19,6 @@ NKRO_ENABLE = no # USB Nkey Rollover - not yet supported in LUFA
EXTRAKEY_ENABLE = yes
USB_HID_ENABLE = yes
BACKLIGHT_ENABLE = no
-#BLUETOOTH = AdafruitBLE # For Adafruit Feather 32U4 BLE support, uncomment this line
CUSTOM_MATRIX = yes
SRC = matrix.c m0110.c
diff --git a/keyboards/converter/modelm_ssk/rules.mk b/keyboards/converter/modelm_ssk/rules.mk
index 4b05b0ae0c3..eab17f7d953 100644
--- a/keyboards/converter/modelm_ssk/rules.mk
+++ b/keyboards/converter/modelm_ssk/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/converter/palm_usb/post_rules.mk b/keyboards/converter/palm_usb/post_rules.mk
new file mode 100644
index 00000000000..9c110767015
--- /dev/null
+++ b/keyboards/converter/palm_usb/post_rules.mk
@@ -0,0 +1,7 @@
+ifdef HARDWARE_SERIAL
+ # Untested with palm_usb
+ SRC += protocol/serial_uart.c
+ OPT_DEFS += -DHARDWARE_SERIAL
+else
+ SRC += protocol/serial_soft.c
+endif
diff --git a/keyboards/converter/palm_usb/rules.mk b/keyboards/converter/palm_usb/rules.mk
index e7bedd4addf..f83a18afd66 100644
--- a/keyboards/converter/palm_usb/rules.mk
+++ b/keyboards/converter/palm_usb/rules.mk
@@ -23,12 +23,5 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
SRC += matrix.c
-ifdef HARDWARE_SERIAL
- # Untested with palm_usb
- SRC += protocol/serial_uart.c
- OPT_DEFS += -DHARDWARE_SERIAL
-else
- SRC += protocol/serial_soft.c
-endif
DEFAULT_FOLDER = converter/palm_usb/stowaway
diff --git a/keyboards/converter/sun_usb/config.h b/keyboards/converter/sun_usb/config.h
index f073e61e440..c67ae5ebae8 100644
--- a/keyboards/converter/sun_usb/config.h
+++ b/keyboards/converter/sun_usb/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x3333
@@ -81,5 +80,3 @@ along with this program. If not, see .
/* idle */ \
SERIAL_SOFT_TXD_ON(); \
} while (0)
-
-#endif
diff --git a/keyboards/converter/sun_usb/post_rules.mk b/keyboards/converter/sun_usb/post_rules.mk
new file mode 100644
index 00000000000..2ea1f0a5bf3
--- /dev/null
+++ b/keyboards/converter/sun_usb/post_rules.mk
@@ -0,0 +1,6 @@
+ifdef HARDWARE_SERIAL
+ SRC += protocol/serial_uart.c
+ OPT_DEFS += -DHARDWARE_SERIAL
+else
+ SRC += protocol/serial_soft.c
+endif
diff --git a/keyboards/converter/sun_usb/rules.mk b/keyboards/converter/sun_usb/rules.mk
index 1decefe519f..0f53fde80e7 100644
--- a/keyboards/converter/sun_usb/rules.mk
+++ b/keyboards/converter/sun_usb/rules.mk
@@ -23,11 +23,5 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
SRC += matrix.c led.c
-ifdef HARDWARE_SERIAL
- SRC += protocol/serial_uart.c
- OPT_DEFS += -DHARDWARE_SERIAL
-else
- SRC += protocol/serial_soft.c
-endif
DEFAULT_FOLDER = converter/sun_usb/type5
diff --git a/keyboards/converter/sun_usb/type3/type3.h b/keyboards/converter/sun_usb/type3/type3.h
index f6f14f4effd..b84a703d6b8 100644
--- a/keyboards/converter/sun_usb/type3/type3.h
+++ b/keyboards/converter/sun_usb/type3/type3.h
@@ -15,11 +15,12 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef TYPE3_H
-#define TYPE3_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* Sun type 3 keyboard
,-------. ,-----------------------------------------------------------. ,-----------.
| 01| 03| | 05| 06| 08| 0A| 0C| 0E| 10| 11| 12| 2B| | 15| 16| 17|
@@ -35,32 +36,28 @@ along with this program. If not, see .
| 77 | 78 | 79 | 7A | 13 |
`-----------------------------------------------------------'
*/
-
-
-#define LAYOUT( \
- K01,K03, K05,K06, K08, K0A, K0C, K0E, K10,K11,K12,K2B, K15,K16,K17, \
- K19,K1A, K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K58,K2A, K2D,K2E,K2F, \
- K31,K33, K35, K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41, K42, K44,K45,K46, \
- K48,K49, K4C, K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57, K59, K5B,K5C,K5D, \
- K5F,K61, K63, K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D, K6E,K6F, K70,K71,K72, \
- K77,K78, K79, K7A,K13 \
+#define LAYOUT( \
+ k01, k03, k05, k06, k08, k0A, k0C, k0E, k10, k11, k12, k2B, k15, k16, k17, \
+ k19, k1A, k1D, k1E, k1F, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k58, k2A, k2D, k2E, k2F, \
+ k31, k33, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k40, k41, k42, k44, k45, k46, \
+ k48, k49, k4C, k4D, k4E, k4F, k50, k51, k52, k53, k54, k55, k56, k57, k59, k5B, k5C, k5D, \
+ k5F, k61, k63, k64, k65, k66, k67, k68, k69, k6A, k6B, k6C, k6D, k6E, k6F, k70, k71, k72, \
+ k77, k78, k79, k7A, k13 \
) { \
- { KC_NO, K01 , KC_NO, K03 , KC_NO, K05 , K06 , KC_NO }, \
- { K08 , KC_NO, K0A , KC_NO, K0C , KC_NO, K0E , KC_NO }, \
- { K10 , K11 , K12 , K13 , KC_NO, K15 , K16 , K17 }, \
- { KC_NO, K19 , K1A , KC_NO, KC_NO, K1D , K1E , K1F }, \
- { K20 , K21 , K22 , K23 , K24 , K25 , K26 , K27 }, \
- { K28 , K29 , K2A , K2B , KC_NO, K2D , K2E , K2F }, \
- { KC_NO, K31 , KC_NO, K33 , KC_NO, K35 , K36 , K37 }, \
- { K38 , K39 , K3A , K3B , K3C , K3D , K3E , K3F }, \
- { K40 , K41 , K42 , KC_NO, K44 , K45 , K46 , KC_NO }, \
- { K48 , K49 , KC_NO, KC_NO, K4C , K4D , K4E , K4F }, \
- { K50 , K51 , K52 , K53 , K54 , K55 , K56 , K57 }, \
- { K58 , K59 , KC_NO, K5B , K5C , K5D , KC_NO, K5F }, \
- { KC_NO, K61 , KC_NO, K63 , K64 , K65 , K66 , K67 }, \
- { K68 , K69 , K6A , K6B , K6C , K6D , K6E , K6F }, \
- { K70 , K71 , K72 , KC_NO, KC_NO, KC_NO, KC_NO, K77 }, \
- { K78 , K79 , K7A , KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+ { XXX, k01, XXX, k03, XXX, k05, k06, XXX }, \
+ { k08, XXX, k0A, XXX, k0C, XXX, k0E, XXX }, \
+ { k10, k11, k12, k13, XXX, k15, k16, k17 }, \
+ { XXX, k19, k1A, XXX, XXX, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k28, k29, k2A, k2B, XXX, k2D, k2E, k2F }, \
+ { XXX, k31, XXX, k33, XXX, k35, k36, k37 }, \
+ { k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, XXX, k44, k45, k46, XXX }, \
+ { k48, k49, XXX, XXX, k4C, k4D, k4E, k4F }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k58, k59, XXX, k5B, k5C, k5D, XXX, k5F }, \
+ { XXX, k61, XXX, k63, k64, k65, k66, k67 }, \
+ { k68, k69, k6A, k6B, k6C, k6D, k6E, k6F }, \
+ { k70, k71, k72, XXX, XXX, XXX, XXX, k77 }, \
+ { k78, k79, k7A, XXX, XXX, XXX, XXX, XXX } \
}
-
-#endif
diff --git a/keyboards/converter/sun_usb/type5/type5.h b/keyboards/converter/sun_usb/type5/type5.h
index da66d80abc8..d4c9cc267c9 100644
--- a/keyboards/converter/sun_usb/type5/type5.h
+++ b/keyboards/converter/sun_usb/type5/type5.h
@@ -15,11 +15,12 @@
along with this program. If not, see .
*/
-#ifndef TYPE5_H
-#define TYPE5_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* sun type 5 keyboard, JP Unix-style
,-------. ,---, ,---------------. ,---------------. ,---------------. ,-----------. ,---------------.
| 76 | | 0F| | 05| 06| 08| 0A| | 0C| 0E| 10| 11| | 12| 07| 09| 0B| | 16| 17| 15| | 2D| 02| 04| 30|
@@ -36,30 +37,30 @@
| 5F| 61| | 77 | 13| 78 |*73 | 79 |*74 |*75| 7A | 43| 0D| | 18| 1B| 1C| | 5E | 32| |
`-------' `-----------------------------------------------------------' `-----------' `---------------'
*/
-#define LAYOUT_jp_unix( \
- K76, K0F, K05,K06,K08,K0A, K0C,K0E,K10,K11, K12,K07,K09,K0B, K16,K17,K15, K2D,K02,K04,K30, \
- K01,K03, K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K58,K2A, K2C,K34,K60, K62,K2E,K2F,K47, \
- K19,K1A, K35, K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41, K2B, K42,K4A,K7B, K44,K45,K46,K7D, \
- K31,K33, K4C, K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57, K59, K5B,K5C,K5D, \
- K48,K49, K63, K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D, K6E, K14, K70,K71,K72,K5A, \
- K5F,K61, K77,K13, K78, K73, K79, K74, K75, K7A, K43, K0D, K18,K1B,K1C, K5E, K32 \
+#define LAYOUT_jp_unix( \
+ K76, K0F, K05, K06, K08, K0A, K0C, K0E, K10, K11, K12, K07, K09, K0B, K16, K17, K15, K2D, K02, K04, K30, \
+ K01, K03, K1D, K1E, K1F, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K58, K2A, K2C, K34, K60, K62, K2E, K2F, K47, \
+ K19, K1A, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K40, K41, K2B, K42, K4A, K7B, K44, K45, K46, K7D, \
+ K31, K33, K4C, K4D, K4E, K4F, K50, K51, K52, K53, K54, K55, K56, K57, K59, K5B, K5C, K5D, \
+ K48, K49, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K14, K70, K71, K72, K5A, \
+ K5F, K61, K77, K13, K78, K73, K79, K74, K75, K7A, K43, K0D, K18, K1B, K1C, K5E, K32 \
) { \
- { KC_NO, K01 , K02 , K03 , K04 , K05 , K06 , K07 }, \
- { K08 , K09 , K0A , K0B , K0C , K0D , K0E , K0F ,}, \
- { K10 , K11 , K12 , K13 , K14 , K15 , K16 , K17 }, \
- { K18 , K19 , K1A , K1B , K1C , K1D , K1E , K1F }, \
- { K20 , K21 , K22 , K23 , K24 , K25 , K26 , K27 }, \
- { K28 , K29 , K2A , K2B , K2C , K2D , K2E , K2F }, \
- { K30 , K31 , K32 , K33 , K34 , K35 , K36 , K37 }, \
- { K38 , K39 , K3A , K3B , K3C , K3D , K3E , K3F }, \
- { K40 , K41 , K42 , K43 , K44 , K45 , K46 , K47 }, \
- { K48 , K49 , K4A , KC_NO, K4C , K4D , K4E , K4F }, \
- { K50 , K51 , K52 , K53 , K54 , K55 , K56 , K57 }, \
- { K58 , K59 , K5A , K5B , K5C , K5D , K5E , K5F }, \
- { K60 , K61 , K62 , K63 , K64 , K65 , K66 , K67 }, \
- { K68 , K69 , K6A , K6B , K6C , K6D , K6E , KC_NO }, \
- { K70 , K71 , K72 , K73 , K74 , K75 , K76 , K77 }, \
- { K78 , K79 , K7A , K7B , KC_NO, K7D , KC_NO, KC_NO } \
+ { XXX, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27 }, \
+ { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37 }, \
+ { K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K48, K49, K4A, XXX, K4C, K4D, K4E, K4F }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57 }, \
+ { K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, \
+ { K60, K61, K62, K63, K64, K65, K66, K67 }, \
+ { K68, K69, K6A, K6B, K6C, K6D, K6E, XXX }, \
+ { K70, K71, K72, K73, K74, K75, K76, K77 }, \
+ { K78, K79, K7A, K7B, XXX, K7D, XXX, XXX } \
}
/* Sun type 5 keyboard, US Unix-style
@@ -78,30 +79,30 @@
| 5F| 61| | 77 | 13| 78 | 79 | 7A | 43| 0D| | 18| 1B| 1C| | 5E | 32| |
`-------' `-----------------------------------------------------------' `-----------' `---------------'
*/
-#define LAYOUT_us_unix( \
- K76, K0F, K05,K06,K08,K0A, K0C,K0E,K10,K11, K12,K07,K09,K0B, K16,K17,K15, K2D,K02,K04,K30, \
- K01,K03, K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K58,K2A, K2C,K34,K60, K62,K2E,K2F,K47, \
- K19,K1A, K35, K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41, K2B, K42,K4A,K7B, K44,K45,K46,K7D, \
- K31,K33, K4C, K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57, K59, K5B,K5C,K5D, \
- K48,K49, K63, K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D, K6E, K14, K70,K71,K72,K5A, \
- K5F,K61, K77,K13, K78, K79, K7A, K43, K0D, K18,K1B,K1C, K5E, K32 \
+#define LAYOUT_us_unix( \
+ K76, K0F, K05, K06, K08, K0A, K0C, K0E, K10, K11, K12, K07, K09, K0B, K16, K17, K15, K2D, K02, K04, K30, \
+ K01, K03, K1D, K1E, K1F, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K58, K2A, K2C, K34, K60, K62, K2E, K2F, K47, \
+ K19, K1A, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K40, K41, K2B, K42, K4A, K7B, K44, K45, K46, K7D, \
+ K31, K33, K4C, K4D, K4E, K4F, K50, K51, K52, K53, K54, K55, K56, K57, K59, K5B, K5C, K5D, \
+ K48, K49, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K14, K70, K71, K72, K5A, \
+ K5F, K61, K77, K13, K78, K79, K7A, K43, K0D, K18, K1B, K1C, K5E, K32 \
) { \
- { KC_NO, K01 , K02 , K03 , K04 , K05 , K06 , K07 }, \
- { K08 , K09 , K0A , K0B , K0C , K0D , K0E , K0F ,}, \
- { K10 , K11 , K12 , K13 , K14 , K15 , K16 , K17 }, \
- { K18 , K19 , K1A , K1B , K1C , K1D , K1E , K1F }, \
- { K20 , K21 , K22 , K23 , K24 , K25 , K26 , K27 }, \
- { K28 , K29 , K2A , K2B , K2C , K2D , K2E , K2F }, \
- { K30 , K31 , K32 , K33 , K34 , K35 , K36 , K37 }, \
- { K38 , K39 , K3A , K3B , K3C , K3D , K3E , K3F }, \
- { K40 , K41 , K42 , K43 , K44 , K45 , K46 , K47 }, \
- { K48 , K49 , K4A , KC_NO, K4C , K4D , K4E , K4F }, \
- { K50 , K51 , K52 , K53 , K54 , K55 , K56 , K57 }, \
- { K58 , K59 , K5A , K5B , K5C , K5D , K5E , K5F }, \
- { K60 , K61 , K62 , K63 , K64 , K65 , K66 , K67 }, \
- { K68 , K69 , K6A , K6B , K6C , K6D , K6E , KC_NO }, \
- { K70 , K71 , K72 , KC_NO, KC_NO, KC_NO, K76 , K77 }, \
- { K78 , K79 , K7A , K7B , KC_NO, K7D , KC_NO, KC_NO } \
+ { XXX, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27 }, \
+ { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37 }, \
+ { K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K48, K49, K4A, XXX, K4C, K4D, K4E, K4F }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57 }, \
+ { K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, \
+ { K60, K61, K62, K63, K64, K65, K66, K67 }, \
+ { K68, K69, K6A, K6B, K6C, K6D, K6E, XXX }, \
+ { K70, K71, K72, XXX, XXX, XXX, K76, K77 }, \
+ { K78, K79, K7A, K7B, XXX, K7D, XXX, XXX } \
}
/* Sun type 5 keyboard, US ANSI-style
@@ -120,29 +121,28 @@
| 5F| 61| | 4C | 13| 78 | 79 | 7A | 43| 0D| | 18| 1B| 1C| | 5E | 32| |
`-------' `-----------------------------------------------------------' `-----------' `---------------'
*/
-#define LAYOUT_ansi( \
- K76, K1D, K05,K06,K08,K0A, K0C,K0E,K10,K11, K12,K07,K09,K0B, K16,K17,K15, K2D,K02,K04,K30, \
- K01,K03, K2A,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29, K2B, K2C,K34,K60, K62,K2E,K2F,K47, \
- K19,K1A, K35, K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41, K58, K42,K4A,K7B, K44,K45,K46,K7D, \
- K31,K33, K77, K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57, K59, K5B,K5C,K5D, \
- K48,K49, K63, K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D, K6E, K14, K70,K71,K72,K5A, \
- K5F,K61, K4C,K13, K78, K79, K7A, K43, K0D, K18,K1B,K1C, K5E, K32 \
+#define LAYOUT_ansi( \
+ K76, K1D, K05, K06, K08, K0A, K0C, K0E, K10, K11, K12, K07, K09, K0B, K16, K17, K15, K2D, K02, K04, K30, \
+ K01, K03, K2A, K1E, K1F, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2B, K2C, K34, K60, K62, K2E, K2F, K47, \
+ K19, K1A, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K40, K41, K58, K42, K4A, K7B, K44, K45, K46, K7D, \
+ K31, K33, K77, K4D, K4E, K4F, K50, K51, K52, K53, K54, K55, K56, K57, K59, K5B, K5C, K5D, \
+ K48, K49, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K14, K70, K71, K72, K5A, \
+ K5F, K61, K4C, K13, K78, K79, K7A, K43, K0D, K18, K1B, K1C, K5E, K32 \
) { \
- { KC_NO, K01 , K02 , K03 , K04 , K05 , K06 , K07 }, \
- { K08 , K09 , K0A , K0B , K0C , K0D , K0E , KC_NO,}, \
- { K10 , K11 , K12 , K13 , K14 , K15 , K16 , K17 }, \
- { K18 , K19 , K1A , K1B , K1C , K1D , K1E , K1F }, \
- { K20 , K21 , K22 , K23 , K24 , K25 , K26 , K27 }, \
- { K28 , K29 , K2A , K2B , K2C , K2D , K2E , K2F }, \
- { K30 , K31 , K32 , K33 , K34 , K35 , K36 , K37 }, \
- { K38 , K39 , K3A , K3B , K3C , K3D , K3E , K3F }, \
- { K40 , K41 , K42 , K43 , K44 , K45 , K46 , K47 }, \
- { K48 , K49 , K4A , KC_NO, K4C , K4D , K4E , K4F }, \
- { K50 , K51 , K52 , K53 , K54 , K55 , K56 , K57 }, \
- { K58 , K59 , K5A , K5B , K5C , K5D , K5E , K5F }, \
- { K60 , K61 , K62 , K63 , K64 , K65 , K66 , K67 }, \
- { K68 , K69 , K6A , K6B , K6C , K6D , K6E , KC_NO }, \
- { K70 , K71 , K72 , KC_NO, KC_NO, KC_NO, K76 , K77 }, \
- { K78 , K79 , K7A , K7B , KC_NO, K7D , KC_NO, KC_NO } \
+ { XXX, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K08, K09, K0A, K0B, K0C, K0D, K0E, XXX }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27 }, \
+ { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37 }, \
+ { K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K48, K49, K4A, XXX, K4C, K4D, K4E, K4F }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57 }, \
+ { K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, \
+ { K60, K61, K62, K63, K64, K65, K66, K67 }, \
+ { K68, K69, K6A, K6B, K6C, K6D, K6E, XXX }, \
+ { K70, K71, K72, XXX, XXX, XXX, K76, K77 }, \
+ { K78, K79, K7A, K7B, XXX, K7D, XXX, XXX } \
}
-#endif
diff --git a/keyboards/converter/usb_usb/ble/ble.h b/keyboards/converter/usb_usb/ble/ble.h
index d28629643a9..3dccc23a413 100644
--- a/keyboards/converter/usb_usb/ble/ble.h
+++ b/keyboards/converter/usb_usb/ble/ble.h
@@ -1,6 +1,3 @@
-#ifndef BLE_H
-#define BLE_H
+#pragma once
#include QMK_KEYBOARD_H
-
-#endif
diff --git a/keyboards/converter/usb_usb/ble/rules.mk b/keyboards/converter/usb_usb/ble/rules.mk
index 438dec834a1..ad4d206a511 100644
--- a/keyboards/converter/usb_usb/ble/rules.mk
+++ b/keyboards/converter/usb_usb/ble/rules.mk
@@ -12,9 +12,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output
-BLUETOOTH = AdafruitBLE
-ADAFRUIT_BLE_ENABLE = yes
+
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
EXTRAFLAGS += -flto
diff --git a/keyboards/converter/usb_usb/config.h b/keyboards/converter/usb_usb/config.h
index 7ff8ceeebd7..d2488336a5c 100644
--- a/keyboards/converter/usb_usb/config.h
+++ b/keyboards/converter/usb_usb/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
@@ -46,5 +45,3 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/converter/usb_usb/hasu/hasu.h b/keyboards/converter/usb_usb/hasu/hasu.h
index d5e78558608..3dccc23a413 100644
--- a/keyboards/converter/usb_usb/hasu/hasu.h
+++ b/keyboards/converter/usb_usb/hasu/hasu.h
@@ -1,6 +1,3 @@
-#ifndef HASU_H
-#define HASU_H
+#pragma once
#include QMK_KEYBOARD_H
-
-#endif
diff --git a/keyboards/converter/usb_usb/pro_micro/pro_micro.h b/keyboards/converter/usb_usb/pro_micro/pro_micro.h
index 566df9f20fd..3dccc23a413 100644
--- a/keyboards/converter/usb_usb/pro_micro/pro_micro.h
+++ b/keyboards/converter/usb_usb/pro_micro/pro_micro.h
@@ -1,6 +1,3 @@
-#ifndef PRO_MICRO_H
-#define PRO_MICRO_H
+#pragma once
#include QMK_KEYBOARD_H
-
-#endif
diff --git a/keyboards/converter/usb_usb/usb_usb.h b/keyboards/converter/usb_usb/usb_usb.h
index 1d1b6770d12..3acd67634a5 100644
--- a/keyboards/converter/usb_usb/usb_usb.h
+++ b/keyboards/converter/usb_usb/usb_usb.h
@@ -15,11 +15,12 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef USB_USB_H
-#define USB_USB_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define ______ KC_TRNS
/* ,---------------. ,---------------. ,---------------.
@@ -63,46 +64,31 @@ along with this program. If not, see .
* TODO: use same keycode to pass through instead of KC_NO?
*/
#define LAYOUT_all( \
- K68,K69,K6A,K6B,K6C,K6D,K6E,K6F,K70,K71,K72,K73, \
- K29, K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K45, K46,K47,K48, K81,K80,K7F,K66, K75, \
- K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K89,K2A, K49,K4A,K4B, K53,K54,K55,K56, K78,K79, \
- K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30, K31, K4C,K4D,K4E, K5F,K60,K61,K57, K76,K7A, \
- K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34, K32,K28, K5C,K5D,K5E,K85, K77,K7C, \
- KE1,K64,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38, K87,KE5, K52, K59,K5A,K5B,K67, K74,K7D, \
- KE0,KE3,KE2,K8B,K91, K2C, K90,K8A,K88,KE6,KE7,K65,KE4, K50,K51,K4F, K62, K63,K58, K7E,K7B \
+ k68, k69, k6A, k6B, k6C, k6D, k6E, k6F, k70, k71, k72, k73, \
+ k29, k3A, k3B, k3C, k3D, k3E, k3F, k40, k41, k42, k43, k44, k45, k46, k47, k48, k81, k80, k7F, k66, k75, \
+\
+ k35, k1E, k1F, k20, k21, k22, k23, k24, k25, k26, k27, k2D, k2E, k89, k2A, k49, k4A, k4B, k53, k54, k55, k56, k78, k79, \
+ k2B, k14, k1A, k08, k15, k17, k1C, k18, k0C, k12, k13, k2F, k30, k31, k4C, k4D, k4E, k5F, k60, k61, k57, k76, k7A, \
+ k39, k04, k16, k07, k09, k0A, k0B, k0D, k0E, k0F, k33, k34, k32, k28, k5C, k5D, k5E, k85, k77, k7C, \
+ kE1, k64, k1D, k1B, k06, k19, k05, k11, k10, k36, k37, k38, k87, kE5, k52, k59, k5A, k5B, k67, k74, k7D, \
+ kE0, kE3, kE2, k8B, k91, k2C, k90, k8A, k88, kE6, kE7, k65, kE4, k50, k51, k4F, k62, k63, k58, k7E, k7B \
) { \
- { KC_NO, KC_NO, KC_NO, KC_NO, K04, K05, K06, K07, /* 00-07 */ \
- K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, /* 08-0F */ \
- { K10, K11, K12, K13, K14, K15, K16, K17, /* 10-17 */ \
- K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, /* 18-1F */ \
- { K20, K21, K22, K23, K24, K25, K26, K27, /* 20-27 */ \
- K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, /* 28-2F */ \
- { K30, K31, K32, K33, K34, K35, K36, K37, /* 30-37 */ \
- K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, /* 38-3F */ \
- { K40, K41, K42, K43, K44, K45, K46, K47, /* 40-47 */ \
- K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, /* 48-4F */ \
- { K50, K51, K52, K53, K54, K55, K56, K57, /* 50-57 */ \
- K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, /* 58-5F */ \
- { K60, K61, K62, K63, K64, K65, K66, K67, /* 60-67 */ \
- K68, K69, K6A, K6B, K6C, K6D, K6E, K6F }, /* 68-6F */ \
- { K70, K71, K72, K73, K74, K75, K76, K77, /* 70-77 */ \
- K78, K79, K7A, K7B, K7C, K7D, K7E, K7F }, /* 78-7F */ \
- { K80, K81, KC_NO, KC_NO, KC_NO, K85, KC_NO, K87, /* 80-87 */ \
- K88, K89, K8A, K8B, KC_NO, KC_NO, KC_NO, KC_NO }, /* 88-8F */ \
- { K90, K91, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 90-97 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* 98-9F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* A0-A7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* A8-AF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* B0-B7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* B8-BF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* C0-C7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* C8-CF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* D0-D7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* D8-DF */ \
- { KE0, KE1, KE2, KE3, KE4, KE5, KE6, KE7, /* E0-E7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* E8-EF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* F0-F7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* F8-FF */ \
+ { XXX, XXX, XXX, XXX, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k5F }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6A, k6B, k6C, k6D, k6E, k6F }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7A, k7B, k7C, k7D, k7E, k7F }, \
+ { k80, k81, XXX, XXX, XXX, k85, XXX, k87, k88, k89, k8A, k8B, XXX, XXX, XXX, XXX }, \
+ { k90, k91, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { kE0, kE1, kE2, kE3, kE4, kE5, kE6, kE7, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
}
/* ,---. ,---------------. ,---------------. ,---------------. ,-----------.
@@ -121,45 +107,30 @@ along with this program. If not, see .
* `-----------------------------------------------------------' `-----------' `---------------'
*/
#define LAYOUT_ansi( \
- K29,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K45, K46,K47,K48, \
- K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K2A, K49,K4A,K4B, K53,K54,K55,K56, \
- K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30,K31, K4C,K4D,K4E, K5F,K60,K61, \
- K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34, K28, K5C,K5D,K5E,K57, \
- KE1,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38, KE5, K52, K59,K5A,K5B, \
- KE0,KE3,KE2, K2C, KE6,KE7,K65,KE4, K50,K51,K4F, K62, K63,K58 \
+ k29, k3A, k3B, k3C, k3D, k3E, k3F, k40, k41, k42, k43, k44, k45, k46, k47, k48, \
+\
+ k35, k1E, k1F, k20, k21, k22, k23, k24, k25, k26, k27, k2D, k2E, k2A, k49, k4A, k4B, k53, k54, k55, k56, \
+ k2B, k14, k1A, k08, k15, k17, k1C, k18, k0C, k12, k13, k2F, k30, k31, k4C, k4D, k4E, k5F, k60, k61, \
+ k39, k04, k16, k07, k09, k0A, k0B, k0D, k0E, k0F, k33, k34, k28, k5C, k5D, k5E, k57, \
+ kE1, k1D, k1B, k06, k19, k05, k11, k10, k36, k37, k38, kE5, k52, k59, k5A, k5B, \
+ kE0, kE3, kE2, k2C, kE6, kE7, k65, kE4, k50, k51, k4F, k62, k63, k58 \
) { \
- { KC_NO, KC_NO, KC_NO, KC_NO, K04, K05, K06, K07, /* 00-07 */ \
- K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, /* 08-0F */ \
- { K10, K11, K12, K13, K14, K15, K16, K17, /* 10-17 */ \
- K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, /* 18-1F */ \
- { K20, K21, K22, K23, K24, K25, K26, K27, /* 20-27 */ \
- K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, /* 28-2F */ \
- { K30, K31, KC_NO, K33, K34, K35, K36, K37, /* 30-37 */ \
- K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, /* 38-3F */ \
- { K40, K41, K42, K43, K44, K45, K46, K47, /* 40-47 */ \
- K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, /* 48-4F */ \
- { K50, K51, K52, K53, K54, K55, K56, K57, /* 50-57 */ \
- K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, /* 58-5F */ \
- { K60, K61, K62, K63, KC_NO, K65, KC_NO, KC_NO, /* 60-67 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, /* 68-6F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 70-77 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, /* 78-7F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 80-87 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* 88-8F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 90-97 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* 98-9F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* A0-A7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* A8-AF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* B0-B7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* B8-BF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* C0-C7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* C8-CF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* D0-D7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* D8-DF */ \
- { KE0, KE1, KE2, KE3, KE4, KE5, KE6, KE7, /* E0-E7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* E8-EF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* F0-F7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* F8-FF */ \
+ { XXX, XXX, XXX, XXX, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, XXX, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k5F }, \
+ { k60, k61, k62, k63, XXX, k65, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,}, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,}, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { kE0, kE1, kE2, kE3, kE4, kE5, kE6, kE7, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
}
/* ,---. ,---------------. ,---------------. ,---------------. ,-----------.
@@ -178,45 +149,30 @@ along with this program. If not, see .
* `-----------------------------------------------------------' `-----------' `---------------'
*/
#define LAYOUT_iso( \
- K29, K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K45, K46,K47,K48, \
- K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K2A, K49,K4A,K4B, K53,K54,K55,K56, \
- K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30,K28, K4C,K4D,K4E, K5F,K60,K61,K57, \
- K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34,K32, K5C,K5D,K5E, \
- KE1,K64,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38, KE5, K52, K59,K5A,K5B,K58, \
- KE0,KE3,KE2, K2C, KE6,KE7,K65,KE4, K50,K51,K4F, K62, K63 \
+ k29, k3A, k3B, k3C, k3D, k3E, k3F, k40, k41, k42, k43, k44, k45, k46, k47, k48, \
+\
+ k35, k1E, k1F, k20, k21, k22, k23, k24, k25, k26, k27, k2D, k2E, k2A, k49, k4A, k4B, k53, k54, k55, k56, \
+ k2B, k14, k1A, k08, k15, k17, k1C, k18, k0C, k12, k13, k2F, k30, k28, k4C, k4D, k4E, k5F, k60, k61, k57, \
+ k39, k04, k16, k07, k09, k0A, k0B, k0D, k0E, k0F, k33, k34, k32, k5C, k5D, k5E, \
+ kE1, k64, k1D, k1B, k06, k19, k05, k11, k10, k36, k37, k38, kE5, k52, k59, k5A, k5B, k58, \
+ kE0, kE3, kE2, k2C, kE6, kE7, k65, kE4, k50, k51, k4F, k62, k63 \
) { \
- { KC_NO, KC_NO, KC_NO, KC_NO, K04, K05, K06, K07, /* 00-07 */ \
- K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, /* 08-0F */ \
- { K10, K11, K12, K13, K14, K15, K16, K17, /* 10-17 */ \
- K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, /* 18-1F */ \
- { K20, K21, K22, K23, K24, K25, K26, K27, /* 20-27 */ \
- K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, /* 28-2F */ \
- { K30, K31, K32, K33, K34, K35, K36, K37, /* 30-37 */ \
- K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, /* 38-3F */ \
- { K40, K41, K42, K43, K44, K45, K46, K47, /* 40-47 */ \
- K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, /* 48-4F */ \
- { K50, K51, K52, K53, K54, K55, K56, K57, /* 50-57 */ \
- K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, /* 58-5F */ \
- { K60, K61, K62, K63, K64, K65, KC_NO, KC_NO, /* 60-67 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, /* 68-6F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 70-77 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, /* 78-7F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 80-87 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* 88-8F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 90-97 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* 98-9F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* A0-A7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* A8-AF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* B0-B7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* B8-BF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* C0-C7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* C8-CF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* D0-D7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* D8-DF */ \
- { KE0, KE1, KE2, KE3, KE4, KE5, KE6, KE7, /* E0-E7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* E8-EF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* F0-F7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* F8-FF */ \
+ { XXX, XXX, XXX, XXX, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k5F }, \
+ { k60, k61, k62, k63, k64, k65, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,}, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,}, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { kE0, kE1, kE2, kE3, kE4, kE5, kE6, kE7, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
}
/* ,---. ,---------------. ,---------------. ,---------------. ,-----------.
@@ -235,44 +191,28 @@ along with this program. If not, see .
* `-----------------------------------------------------------' `-----------' `---------------'
*/
#define LAYOUT_jis( \
- K29, K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K45, K46,K47,K48, \
- K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K89,K2A, K49,K4A,K4B, K53,K54,K55,K56, \
- K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30, K28, K4C,K4D,K4E, K5F,K60,K61,K57, \
- K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34,K32, K5C,K5D,K5E, \
- KE1,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38, K87,KE5, K52, K59,K5A,K5B,K58, \
- KE0,KE3,KE2,K8B, K2C, K8A,K88,KE6,KE7,K65,KE4, K50,K51,K4F, K62, K63 \
+ k29, k3A, k3B, k3C, k3D, k3E, k3F, k40, k41, k42, k43, k44, k45, k46, k47, k48, \
+\
+ k35, k1E, k1F, k20, k21, k22, k23, k24, k25, k26, k27, k2D, k2E, k89, k2A, k49, k4A, k4B, k53, k54, k55, k56, \
+ k2B, k14, k1A, k08, k15, k17, k1C, k18, k0C, k12, k13, k2F, k30, k28, k4C, k4D, k4E, k5F, k60, k61, k57, \
+ k39, k04, k16, k07, k09, k0A, k0B, k0D, k0E, k0F, k33, k34, k32, k5C, k5D, k5E, \
+ kE1, k1D, k1B, k06, k19, k05, k11, k10, k36, k37, k38, k87, kE5, k52, k59, k5A, k5B, k58, \
+ kE0, kE3, kE2, k8B, k2C, k8A, k88, kE6, kE7, k65, kE4, k50, k51, k4F, k62, k63 \
) { \
- { KC_NO, KC_NO, KC_NO, KC_NO, K04, K05, K06, K07, /* 00-07 */ \
- K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, /* 08-0F */ \
- { K10, K11, K12, K13, K14, K15, K16, K17, /* 10-17 */ \
- K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, /* 18-1F */ \
- { K20, K21, K22, K23, K24, K25, K26, K27, /* 20-27 */ \
- K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, /* 28-2F */ \
- { K30, K31, K32, K33, K34, K35, K36, K37, /* 30-37 */ \
- K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, /* 38-3F */ \
- { K40, K41, K42, K43, K44, K45, K46, K47, /* 40-47 */ \
- K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, /* 48-4F */ \
- { K50, K51, K52, K53, K54, K55, K56, K57, /* 50-57 */ \
- K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, /* 58-5F */ \
- { K60, K61, K62, K63, K64, K65, KC_NO, KC_NO, /* 60-67 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, /* 68-6F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 70-77 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, /* 78-7F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K87, /* 80-87 */ \
- K88, K89, K8A, K8B, KC_NO, KC_NO, KC_NO, KC_NO }, /* 88-8F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 90-97 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* 98-9F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* A0-A7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* A8-AF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* B0-B7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* B8-BF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* C0-C7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* C8-CF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* D0-D7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* D8-DF */ \
- { KE0, KE1, KE2, KE3, KE4, KE5, KE6, KE7, /* E0-E7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* E8-EF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* F0-F7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* F8-FF */ \
+ { XXX, XXX, XXX, XXX, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k5F }, \
+ { k60, k61, k62, k63, k64, k65, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,}, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,}, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, k87, k88, k89, k8A, k8B, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { kE0, kE1, kE2, kE3, kE4, kE5, kE6, kE7, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
}
-#endif
diff --git a/keyboards/converter/xt_usb/rules.mk b/keyboards/converter/xt_usb/rules.mk
index 519d76f4d4f..80336144472 100644
--- a/keyboards/converter/xt_usb/rules.mk
+++ b/keyboards/converter/xt_usb/rules.mk
@@ -19,7 +19,6 @@ NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
-XT_ENABLE = yes
CUSTOM_MATRIX = yes
-SRC += matrix.c
+SRC += matrix.c xt_interrupt.c
diff --git a/tmk_core/protocol/xt.h b/keyboards/converter/xt_usb/xt.h
similarity index 100%
rename from tmk_core/protocol/xt.h
rename to keyboards/converter/xt_usb/xt.h
diff --git a/tmk_core/protocol/xt_interrupt.c b/keyboards/converter/xt_usb/xt_interrupt.c
similarity index 100%
rename from tmk_core/protocol/xt_interrupt.c
rename to keyboards/converter/xt_usb/xt_interrupt.c
diff --git a/keyboards/cool836a/rules.mk b/keyboards/cool836a/rules.mk
index c79f74e34b9..9906266f482 100644
--- a/keyboards/cool836a/rules.mk
+++ b/keyboards/cool836a/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/coseyfannitutti/discipad/rules.mk b/keyboards/coseyfannitutti/discipad/rules.mk
index fadfff9d88f..e2da88fcad7 100644
--- a/keyboards/coseyfannitutti/discipad/rules.mk
+++ b/keyboards/coseyfannitutti/discipad/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = usbasploader
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/coseyfannitutti/discipline/rules.mk b/keyboards/coseyfannitutti/discipline/rules.mk
index 9099b68d083..50a627d3d82 100644
--- a/keyboards/coseyfannitutti/discipline/rules.mk
+++ b/keyboards/coseyfannitutti/discipline/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = usbasploader
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/coseyfannitutti/mullet/rules.mk b/keyboards/coseyfannitutti/mullet/rules.mk
index 299768093d0..e5c4883fa50 100644
--- a/keyboards/coseyfannitutti/mullet/rules.mk
+++ b/keyboards/coseyfannitutti/mullet/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/coseyfannitutti/mysterium/rules.mk b/keyboards/coseyfannitutti/mysterium/rules.mk
index 7e3df06807c..8bc4495ced6 100644
--- a/keyboards/coseyfannitutti/mysterium/rules.mk
+++ b/keyboards/coseyfannitutti/mysterium/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = usbasploader
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/coseyfannitutti/romeo/rules.mk b/keyboards/coseyfannitutti/romeo/rules.mk
index 7a50fbb7785..2057d9c9399 100644
--- a/keyboards/coseyfannitutti/romeo/rules.mk
+++ b/keyboards/coseyfannitutti/romeo/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = usbasploader
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/cozykeys/bloomer/v2/rules.mk b/keyboards/cozykeys/bloomer/v2/rules.mk
index ba2ecf38c30..6a63c958d34 100644
--- a/keyboards/cozykeys/bloomer/v2/rules.mk
+++ b/keyboards/cozykeys/bloomer/v2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/craftwalk/keymaps/default/keymap.c b/keyboards/craftwalk/keymaps/default/keymap.c
index 40c95144756..f02f9c975f2 100644
--- a/keyboards/craftwalk/keymaps/default/keymap.c
+++ b/keyboards/craftwalk/keymaps/default/keymap.c
@@ -22,15 +22,15 @@ enum layer_names {
_ADJUST
};
-#define KC_NUM MO(_NUM)
-#define KC_ADJ MO(_ADJUST)
+#define MO_NUM MO(_NUM)
+#define MO_ADJ MO(_ADJUST)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
KC_Q, KC_W, KC_E,
KC_LCTL, KC_A, KC_S, KC_D,
- KC_LSFT, KC_ADJ, KC_WH_U, KC_WH_D, KC_F, KC_NUM, KC_SPC
+ KC_LSFT, MO_ADJ, KC_WH_U, KC_WH_D, KC_F, MO_NUM, KC_SPC
),
/* Number */
[_NUM] = LAYOUT(
diff --git a/keyboards/crazy_keyboard_68/rules.mk b/keyboards/crazy_keyboard_68/rules.mk
index 0c7306bd7ce..0f103359075 100644
--- a/keyboards/crazy_keyboard_68/rules.mk
+++ b/keyboards/crazy_keyboard_68/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/crbn/rules.mk b/keyboards/crbn/rules.mk
index 90a7d4fe028..adaf11fd8ae 100644
--- a/keyboards/crbn/rules.mk
+++ b/keyboards/crbn/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/crin/rules.mk b/keyboards/crin/rules.mk
index f37a75f06ff..1710f6236b0 100644
--- a/keyboards/crin/rules.mk
+++ b/keyboards/crin/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/crkbd/keymaps/armand1m/keymap.c b/keyboards/crkbd/keymaps/armand1m/keymap.c
index a37862fad38..3caee1c827f 100644
--- a/keyboards/crkbd/keymaps/armand1m/keymap.c
+++ b/keyboards/crkbd/keymaps/armand1m/keymap.c
@@ -130,7 +130,8 @@ void oled_render_amsterdam_flag(void) {
oled_write_raw_P(amsterdam_flag, sizeof(amsterdam_flag));
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
oled_render_amsterdam_flag();
+ return false;
}
#endif // OLED_ENABLE
diff --git a/keyboards/crkbd/keymaps/blipson/keymap.c b/keyboards/crkbd/keymaps/blipson/keymap.c
index 23491e11a6b..ad7664c2959 100644
--- a/keyboards/crkbd/keymaps/blipson/keymap.c
+++ b/keyboards/crkbd/keymaps/blipson/keymap.c
@@ -128,12 +128,13 @@ void oled_render_logo(void) {
oled_write_P(crkbd_logo, false);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
oled_render_layer_state();
} else {
oled_render_logo();
}
+ return false;
}
#endif // OLED_ENABLE
diff --git a/keyboards/crkbd/keymaps/davidrambo/config.h b/keyboards/crkbd/keymaps/davidrambo/config.h
index 82057151d3c..bf96f265f44 100644
--- a/keyboards/crkbd/keymaps/davidrambo/config.h
+++ b/keyboards/crkbd/keymaps/davidrambo/config.h
@@ -51,34 +51,52 @@ along with this program. If not, see .
#define RGB_MATRIX_VAL_STEP 8
#define RGB_MATRIX_SPD_STEP 10
- /* Disable the animations you don't want/need. You will need to disable a good number of these *
- * because they take up a lot of space. Disable until you can successfully compile your firmware. */
- #define DISABLE_RGB_MATRIX_ALPHAS_MODS
- #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define DISABLE_RGB_MATRIX_BREATHING
- #define DISABLE_RGB_MATRIX_CYCLE_ALL
- #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define DISABLE_RGB_MATRIX_DUAL_BEACON
- #define DISABLE_RGB_MATRIX_RAINBOW_BEACON
- #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define DISABLE_RGB_MATRIX_RAINDROPS
- #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- // # define DISABLE_RGB_MATRIX_TYPING_HEATMAP
- #define DISABLE_RGB_MATRIX_DIGITAL_RAIN
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define DISABLE_RGB_MATRIX_SPLASH
- #define DISABLE_RGB_MATRIX_MULTISPLASH
- #define DISABLE_RGB_MATRIX_SOLID_SPLASH
- #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+// 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
diff --git a/keyboards/crkbd/keymaps/default/keymap.c b/keyboards/crkbd/keymaps/default/keymap.c
index 88d40ee4073..e06cfa34655 100644
--- a/keyboards/crkbd/keymaps/default/keymap.c
+++ b/keyboards/crkbd/keymaps/default/keymap.c
@@ -157,13 +157,14 @@ void oled_render_logo(void) {
oled_write_P(crkbd_logo, false);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
oled_render_layer_state();
oled_render_keylog();
} else {
oled_render_logo();
}
+ return false;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/crkbd/keymaps/devdev/config.h b/keyboards/crkbd/keymaps/devdev/config.h
index c858f8f2d09..4848af2245f 100644
--- a/keyboards/crkbd/keymaps/devdev/config.h
+++ b/keyboards/crkbd/keymaps/devdev/config.h
@@ -84,34 +84,52 @@ along with this program. If not, see .
# define RGB_MATRIX_VAL_STEP 8
# define RGB_MATRIX_SPD_STEP 10
-/* Disable the animations you don't want/need. You will need to disable a good number of these *
- * because they take up a lot of space. Disable until you can successfully compile your firmware. */
- # define DISABLE_RGB_MATRIX_ALPHAS_MODS
-// # define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// # define DISABLE_RGB_MATRIX_BREATHING
-// # define DISABLE_RGB_MATRIX_CYCLE_ALL
-// # define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-// # define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-// # define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-// # define DISABLE_RGB_MATRIX_DUAL_BEACON
-// # define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-// # define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// # define DISABLE_RGB_MATRIX_RAINDROPS
-// # define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- # define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define DISABLE_RGB_MATRIX_SPLASH
-// # define DISABLE_RGB_MATRIX_MULTISPLASH
-// # define DISABLE_RGB_MATRIX_SOLID_SPLASH
-// # define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+// 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
diff --git a/keyboards/crkbd/keymaps/devdev/keymap.c b/keyboards/crkbd/keymaps/devdev/keymap.c
index aa4d39a2538..a5062957497 100644
--- a/keyboards/crkbd/keymaps/devdev/keymap.c
+++ b/keyboards/crkbd/keymaps/devdev/keymap.c
@@ -392,13 +392,14 @@ void oled_render_logo(void) {
oled_write_P(crkbd_logo, false);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_master) {
oled_render_layer_state();
oled_render_keylog();
} else {
oled_render_logo();
}
+ return false;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/crkbd/keymaps/dsanchezseco/config.h b/keyboards/crkbd/keymaps/dsanchezseco/config.h
index f10c474057c..bece69ba67a 100644
--- a/keyboards/crkbd/keymaps/dsanchezseco/config.h
+++ b/keyboards/crkbd/keymaps/dsanchezseco/config.h
@@ -33,38 +33,51 @@ along with this program. If not, see .
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_GRADIENT_LEFT_RIGHT
-//disable effects
-#define DISABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue speed is hue for secondary hue
-#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom speed controls how much gradient changes
-#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Static gradient left to right speed controls how much gradient changes
-#define DISABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
-#define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
-#define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
-#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
-#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
-#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
-#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-#define DISABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
-#define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
-#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
-#define DISABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
-#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue pulses keys hit to shifted hue then fades to current hue
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
-#define DISABLE_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 DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
-#define DISABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-#define DISABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
-#define DISABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
-#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-#define DISABLE_RGB_MATRIX_EFFECT_MAX
+// 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
diff --git a/keyboards/crkbd/keymaps/dsanchezseco/keymap.c b/keyboards/crkbd/keymaps/dsanchezseco/keymap.c
index 11690b0294a..6ef428a11fc 100644
--- a/keyboards/crkbd/keymaps/dsanchezseco/keymap.c
+++ b/keyboards/crkbd/keymaps/dsanchezseco/keymap.c
@@ -83,7 +83,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
}
const char *read_logo(void);
-void oled_task_user(void){
+bool oled_task_user(void){
switch (biton32(layer_state)){
case _DVORAK:
oled_write_ln_P(PSTR("DVRK"), false);
@@ -102,5 +102,6 @@ void oled_task_user(void){
}
//now print logo
oled_write(read_logo(), false);
+ return false;
}
#endif
diff --git a/keyboards/crkbd/keymaps/edvorakjp/oled.c b/keyboards/crkbd/keymaps/edvorakjp/oled.c
index 3a3748c691b..e5ff0295655 100644
--- a/keyboards/crkbd/keymaps/edvorakjp/oled.c
+++ b/keyboards/crkbd/keymaps/edvorakjp/oled.c
@@ -43,7 +43,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return is_keyboard_left() ? rotation : rotation ^ OLED_ROTATION_180;
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_left()) {
render_mode_icon(!get_enable_kc_lang());
render_layer_state();
@@ -51,5 +51,6 @@ void oled_task_user(void) {
} else {
render_logo();
}
+ return false;
}
#endif // OLED_ENABLE
diff --git a/keyboards/crkbd/keymaps/gotham/config.h b/keyboards/crkbd/keymaps/gotham/config.h
index 05b04e0aa33..1ff008b2ded 100644
--- a/keyboards/crkbd/keymaps/gotham/config.h
+++ b/keyboards/crkbd/keymaps/gotham/config.h
@@ -49,40 +49,40 @@
/* Disable the animations you don't want/need. You will need to disable a good number of these *
* because they take up a lot of space. Disable until you can successfully compile your firmware. */
-# define DISABLE_RGB_MATRIX_ALPHAS_MODS
-# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define DISABLE_RGB_MATRIX_BREATHING
-# define DISABLE_RGB_MATRIX_BAND_SAT
-# define DISABLE_RGB_MATRIX_BAND_VAL
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-// #define DISABLE_RGB_MATRIX_CYCLE_ALL
-# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-// #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define DISABLE_RGB_MATRIX_DUAL_BEACON
-# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define DISABLE_RGB_MATRIX_RAINDROPS
-# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_SPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+# undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# 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_CYCLE_OUT_IN
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+// #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# undef ENABLE_RGB_MATRIX_DUAL_BEACON
+# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# 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_TYPING_HEATMAP
+# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# 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
#endif
diff --git a/keyboards/crkbd/keymaps/gotham/oled.c b/keyboards/crkbd/keymaps/gotham/oled.c
index 4d2c10b60aa..baacc86b183 100644
--- a/keyboards/crkbd/keymaps/gotham/oled.c
+++ b/keyboards/crkbd/keymaps/gotham/oled.c
@@ -246,7 +246,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_270;
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (timer_elapsed(oled_timer) > 10000) {
oled_off();
return;
@@ -262,4 +262,5 @@ void oled_task_user(void) {
} else {
render_status_secondary();
}
+ return false;
}
diff --git a/keyboards/crkbd/keymaps/kidbrazil/config.h b/keyboards/crkbd/keymaps/kidbrazil/config.h
index 752ea862e01..e44ae520f4c 100644
--- a/keyboards/crkbd/keymaps/kidbrazil/config.h
+++ b/keyboards/crkbd/keymaps/kidbrazil/config.h
@@ -68,48 +68,48 @@ along with this program. If not, see .
/* Disable the animations you don't want/need. You will need to disable a good number of these *
* because they take up a lot of space. Disable until you can successfully compile your firmware. */
- #define DISABLE_RGB_MATRIX_ALPHAS_MODS
- #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define DISABLE_RGB_MATRIX_BREATHING
- #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- #define DISABLE_RGB_MATRIX_BAND_SAT
- #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define DISABLE_RGB_MATRIX_BAND_VAL
- #define DISABLE_RGB_MATRIX_CYCLE_ALL
- #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
- #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define DISABLE_RGB_MATRIX_DUAL_BEACON
- #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- #define DISABLE_RGB_MATRIX_SOLID_SPLASH
- #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
- #define DISABLE_RGB_MATRIX_SOLID_SPLASH
- #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
- #define DISABLE_RGB_MATRIX_SPLASH
- #define DISABLE_RGB_MATRIX_MULTISPLASH
- #define DISABLE_RGB_MATRIX_SPLASH
- #define DISABLE_RGB_MATRIX_MULTISPLASH
+# undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# undef ENABLE_RGB_MATRIX_BREATHING
+# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+# undef ENABLE_RGB_MATRIX_BAND_SAT
+# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# undef ENABLE_RGB_MATRIX_BAND_VAL
+# undef ENABLE_RGB_MATRIX_CYCLE_ALL
+# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# 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_CYCLE_UP_DOWN
+# undef ENABLE_RGB_MATRIX_DUAL_BEACON
+# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+# 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_SOLID_REACTIVE_NEXUS
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
+# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
+# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+# undef ENABLE_RGB_MATRIX_SPLASH
+# undef ENABLE_RGB_MATRIX_MULTISPLASH
+# undef ENABLE_RGB_MATRIX_SPLASH
+# undef ENABLE_RGB_MATRIX_MULTISPLASH
#endif
// Custom Font path
#define OLED_FONT_H "keyboards/crkbd/keymaps/kidbrazil/glcdfont.c"
diff --git a/keyboards/crkbd/keymaps/kidbrazil/keymap.c b/keyboards/crkbd/keymaps/kidbrazil/keymap.c
index 7cb08f40d52..219db224333 100644
--- a/keyboards/crkbd/keymaps/kidbrazil/keymap.c
+++ b/keyboards/crkbd/keymaps/kidbrazil/keymap.c
@@ -172,7 +172,7 @@ void render_slave_oled(void) {
}
// {OLED Task} -----------------------------------------------//
-void oled_task_user(void) {
+bool oled_task_user(void) {
// First time out switches to logo as first indication of iddle.
if (timer_elapsed32(oled_timer) > 100000 && timer_elapsed32(oled_timer) < 479999) {
// Render logo on both halves before full timeout
@@ -209,5 +209,6 @@ void oled_task_user(void) {
}
}
}
+ return false;
}
#endif
diff --git a/keyboards/crkbd/keymaps/mcrown/config.h b/keyboards/crkbd/keymaps/mcrown/config.h
index e40bd639f38..15a1f20954d 100644
--- a/keyboards/crkbd/keymaps/mcrown/config.h
+++ b/keyboards/crkbd/keymaps/mcrown/config.h
@@ -36,50 +36,50 @@
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
/* BEGIN: Disable RGB Effects */
-// #define DISABLE_RGB_MATRIX_SOLID_COLOR
-// #define DISABLE_RGB_MATRIX_ALPHAS_MODS
-// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define DISABLE_RGB_MATRIX_BREATHING
-// #define DISABLE_RGB_MATRIX_BAND_SAT
-// #define DISABLE_RGB_MATRIX_BAND_VAL
-// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-// #define DISABLE_RGB_MATRIX_CYCLE_ALL
-// #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-// #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
-// #define DISABLE_RGB_MATRIX_DUAL_BEACON
- #define DISABLE_RGB_MATRIX_RAINBOW_BEACON
- #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define DISABLE_RGB_MATRIX_RAINDROPS
-// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+// #undef ENABLE_RGB_MATRIX_SOLID_COLOR
+// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+// #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_CYCLE_OUT_IN
+// #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# 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
- /* BEGIN: RGB_MATRIX_FRAMEBUFFER_EFFECTS */
-// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define DISABLE_RGB_MATRIX_DIGITAL_RAIN
- /* END: RGB_MATRIX_FRAMEBUFFER_EFFECTS */
+/* BEGIN: RGB_MATRIX_FRAMEBUFFER_EFFECTS */
+// #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
+// #undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+/* END: RGB_MATRIX_FRAMEBUFFER_EFFECTS */
- /* BEGIN: RGB_MATRIX_KEYPRESSES */
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define DISABLE_RGB_MATRIX_SPLASH
-// #define DISABLE_RGB_MATRIX_MULTISPLASH
-// #define DISABLE_RGB_MATRIX_SOLID_SPLASH
-// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
- /* END: RGB_MATRIX_KEYPRESSES */
- /* END: Disable RGB Effects */
+/* BEGIN: RGB_MATRIX_KEYPRESSES */
+// #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
+/* END: RGB_MATRIX_KEYPRESSES */
+/* END: Disable RGB Effects */
#endif
/* To tell the compiler to use custom font */
diff --git a/keyboards/crkbd/keymaps/mcrown/oled.c b/keyboards/crkbd/keymaps/mcrown/oled.c
index b728a5806e0..9623b921a7e 100644
--- a/keyboards/crkbd/keymaps/mcrown/oled.c
+++ b/keyboards/crkbd/keymaps/mcrown/oled.c
@@ -308,7 +308,7 @@ static void render_logo(void){
* @param void.
* @return void.
*/
-void oled_task_user(void){
+bool oled_task_user(void){
if (timer_elapsed32(standby_oled_timer) > 15000){
oled_off();
}else{
@@ -321,6 +321,7 @@ void oled_task_user(void){
oled_scroll_left();
}
}
+ return false;
}
/** @brief process the current key and add it to the keylog string.
diff --git a/keyboards/crkbd/keymaps/ninjonas/config.h b/keyboards/crkbd/keymaps/ninjonas/config.h
index d5b9a86985b..0c0819130f7 100644
--- a/keyboards/crkbd/keymaps/ninjonas/config.h
+++ b/keyboards/crkbd/keymaps/ninjonas/config.h
@@ -37,51 +37,51 @@ along with this program. If not, see .
// #define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
- // BEGIN: Disable RGB Effects
- //#define DISABLE_RGB_MATRIX_SOLID_COLOR
- //#define DISABLE_RGB_MATRIX_ALPHAS_MODS
- //#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define DISABLE_RGB_MATRIX_BREATHING
- #define DISABLE_RGB_MATRIX_BAND_SAT
- #define DISABLE_RGB_MATRIX_BAND_VAL
- // #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define DISABLE_RGB_MATRIX_CYCLE_ALL
- #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
- #define DISABLE_RGB_MATRIX_DUAL_BEACON
- #define DISABLE_RGB_MATRIX_RAINBOW_BEACON
- #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define DISABLE_RGB_MATRIX_RAINDROPS
- #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+// BEGIN: Disable RGB Effects
+//#undef ENABLE_RGB_MATRIX_SOLID_COLOR
+//#undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+//#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# 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_CYCLE_OUT_IN
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# 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
- // BEGIN: RGB_MATRIX_FRAMEBUFFER_EFFECTS
- #define DISABLE_RGB_MATRIX_TYPING_HEATMAP
- // #define DISABLE_RGB_MATRIX_DIGITAL_RAIN
- // END: RGB_MATRIX_FRAMEBUFFER_EFFECTS
+// BEGIN: RGB_MATRIX_FRAMEBUFFER_EFFECTS
+# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
+// #undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// END: RGB_MATRIX_FRAMEBUFFER_EFFECTS
- // BEGIN: RGB_MATRIX_KEYPRESSES
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define DISABLE_RGB_MATRIX_SPLASH
- #define DISABLE_RGB_MATRIX_MULTISPLASH
- #define DISABLE_RGB_MATRIX_SOLID_SPLASH
- #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
- // END: RGB_MATRIX_KEYPRESSES
- // END: Disable RGB Effects
+// BEGIN: RGB_MATRIX_KEYPRESSES
+# 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
+// END: RGB_MATRIX_KEYPRESSES
+// END: Disable RGB Effects
#endif
#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
diff --git a/keyboards/crkbd/keymaps/oled_sample/keymap.c b/keyboards/crkbd/keymaps/oled_sample/keymap.c
index 14b45358557..9daae9607d4 100644
--- a/keyboards/crkbd/keymaps/oled_sample/keymap.c
+++ b/keyboards/crkbd/keymaps/oled_sample/keymap.c
@@ -190,13 +190,14 @@ void render_status_main(void) {
render_keylogger_status();
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
update_log();
if (is_keyboard_master()) {
render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
} else {
render_crkbd_logo();
}
+ return false;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/crkbd/keymaps/oo/keymap.c b/keyboards/crkbd/keymaps/oo/keymap.c
index c0416d9726f..bcc296c8b60 100644
--- a/keyboards/crkbd/keymaps/oo/keymap.c
+++ b/keyboards/crkbd/keymaps/oo/keymap.c
@@ -148,13 +148,14 @@ void oled_render_logo(void) {
oled_write_P(crkbd_logo, false);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
oled_render_layer_state();
oled_render_keylog();
} else {
oled_render_logo();
}
+ return false;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/crkbd/keymaps/rarick/keymap.c b/keyboards/crkbd/keymaps/rarick/keymap.c
index b11bac1e727..adf95554217 100644
--- a/keyboards/crkbd/keymaps/rarick/keymap.c
+++ b/keyboards/crkbd/keymaps/rarick/keymap.c
@@ -158,13 +158,14 @@ void oled_render_logo(void) {
oled_write_P(crkbd_logo, false);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
oled_render_layer_state();
oled_render_keylog();
} else {
oled_render_logo();
}
+ return false;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/crkbd/keymaps/rjhilgefort/keymap.c b/keyboards/crkbd/keymaps/rjhilgefort/keymap.c
index 7ca234a0eee..a753b2b8722 100644
--- a/keyboards/crkbd/keymaps/rjhilgefort/keymap.c
+++ b/keyboards/crkbd/keymaps/rjhilgefort/keymap.c
@@ -204,13 +204,14 @@ void oled_render_logo(void) {
oled_write_P(crkbd_logo, false);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
oled_render_layer_state();
oled_render_keylog();
} else {
oled_render_logo();
}
+ return false;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/crkbd/keymaps/rpbaptist/config.h b/keyboards/crkbd/keymaps/rpbaptist/config.h
index 3c5222eda85..3300684d635 100644
--- a/keyboards/crkbd/keymaps/rpbaptist/config.h
+++ b/keyboards/crkbd/keymaps/rpbaptist/config.h
@@ -50,50 +50,50 @@ along with this program. If not, see .
# define RGB_MATRIX_VAL_STEP 10
# define RGB_MATRIX_SPD_STEP 10
-# define DISABLE_RGB_MATRIX_ALPHAS_MODS
-# define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define DISABLE_RGB_MATRIX_BREATHING
-# define DISABLE_RGB_MATRIX_BAND_SAT
-# define DISABLE_RGB_MATRIX_BAND_VAL
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-
-// #define DISABLE_RGB_MATRIX_CYCLE_ALL
-// # define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define DISABLE_RGB_MATRIX_DUAL_BEACON
-# define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define DISABLE_RGB_MATRIX_RAINDROPS
-# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# 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_CYCLE_OUT_IN
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# 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
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
+// #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_SPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+# 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
# define RGB_MATRIX_ANIMATION_SPEED_DEFAULT UINT8_MAX / 2
# define RGB_MATRIX_ANIMATION_SPEED_SLOW RGB_MATRIX_ANIMATION_SPEED_DEFAULT / 4
diff --git a/keyboards/crkbd/keymaps/rpbaptist/keymap.c b/keyboards/crkbd/keymaps/rpbaptist/keymap.c
index d632e255d5d..a098c73d2c2 100644
--- a/keyboards/crkbd/keymaps/rpbaptist/keymap.c
+++ b/keyboards/crkbd/keymaps/rpbaptist/keymap.c
@@ -290,7 +290,7 @@ void render_status(void) {
# endif
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (timer_elapsed32(oled_timer) > OLED_TIMEOUT) {
oled_off();
return;
@@ -310,6 +310,7 @@ void oled_task_user(void) {
}
#endif
}
+ return false;
}
#endif
diff --git a/keyboards/crkbd/keymaps/rpbaptist/readme.md b/keyboards/crkbd/keymaps/rpbaptist/readme.md
index b9e749b5c67..9525cf7cfe3 100644
--- a/keyboards/crkbd/keymaps/rpbaptist/readme.md
+++ b/keyboards/crkbd/keymaps/rpbaptist/readme.md
@@ -51,7 +51,7 @@ This is the gaming extended layer where movement keys remain the same. This mean
I took a big inspiration from Drashna's RGB configuration and tweaked it.
- `RGB_UND`: Toggles underglow indicators on and off. Each layer has its own color.
-- `RGB_IDL`: This will enable/disable idle mode. By default, when typing, the `DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS` will be used. When the idle timeout has exceeded the secondary animation will be activated, which is `RGB_MATRIX_CYCLE_ALL` by default. When switching to `GAMING` layer the timeout will be reduced and the idle animation changed to `RGB_MATRIX_RAINBOW_PINWHEELS`.
+- `RGB_IDL`: This will enable/disable idle mode. By default, when typing, the `ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS` will be used. When the idle timeout has exceeded the secondary animation will be activated, which is `RGB_MATRIX_CYCLE_ALL` by default. When switching to `GAMING` layer the timeout will be reduced and the idle animation changed to `RGB_MATRIX_RAINBOW_PINWHEELS`.
When idle mode is enabled, `RGB_MATRIX_TYPING_HEATMAP` and `RGB_MATRIX_MULTISPLASH` will be used for active animation. All others for idle animation. When disabling idle mode, the current idle animation will be activated. Additionally, on idling, the underglow layer indication will be deactivated.
- There are no RGB mode cycle keys, but instead several keys to use a specific RGB directly. Each has their own default speed, although this can be changed.
diff --git a/keyboards/crkbd/keymaps/soundmonster/config.h b/keyboards/crkbd/keymaps/soundmonster/config.h
index 8235b486977..0687f9c5c8c 100644
--- a/keyboards/crkbd/keymaps/soundmonster/config.h
+++ b/keyboards/crkbd/keymaps/soundmonster/config.h
@@ -71,40 +71,40 @@ along with this program. If not, see .
/* Disable the animations you don't want/need. You will need to disable a good number of these *
* because they take up a lot of space. Disable until you can successfully compile your firmware. */
-// # define DISABLE_RGB_MATRIX_ALPHAS_MODS
-# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define DISABLE_RGB_MATRIX_BREATHING
-// # define DISABLE_RGB_MATRIX_BAND_SAT
-# define DISABLE_RGB_MATRIX_BAND_VAL
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define DISABLE_RGB_MATRIX_CYCLE_ALL
-# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-// # define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define DISABLE_RGB_MATRIX_DUAL_BEACON
-# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// # define DISABLE_RGB_MATRIX_RAINDROPS
-# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define DISABLE_RGB_MATRIX_SPLASH
-// # define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_SPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+// # undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# 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_CYCLE_OUT_IN
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+// # undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# undef ENABLE_RGB_MATRIX_DUAL_BEACON
+# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# 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_TYPING_HEATMAP
+// # undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# 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
#endif
diff --git a/keyboards/crkbd/keymaps/soundmonster/keymap.c b/keyboards/crkbd/keymaps/soundmonster/keymap.c
index 67cfa78f928..98afe3685f2 100644
--- a/keyboards/crkbd/keymaps/soundmonster/keymap.c
+++ b/keyboards/crkbd/keymaps/soundmonster/keymap.c
@@ -300,7 +300,7 @@ void suspend_power_down_user() {
oled_off();
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (timer_elapsed32(oled_timer) > 30000) {
oled_off();
return;
@@ -314,6 +314,7 @@ void oled_task_user(void) {
} else {
render_status_secondary();
}
+ return false;
}
#endif
diff --git a/keyboards/crkbd/keymaps/sulrich/keymap.c b/keyboards/crkbd/keymaps/sulrich/keymap.c
index f1cd60c526d..84668b53c85 100644
--- a/keyboards/crkbd/keymaps/sulrich/keymap.c
+++ b/keyboards/crkbd/keymaps/sulrich/keymap.c
@@ -137,13 +137,14 @@ void oled_render_logo(void) {
oled_write_P(crkbd_logo, false);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
oled_render_layer_state();
oled_render_keylog();
} else {
oled_render_logo();
}
+ return false;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -153,4 +154,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true;
}
#endif // OLED_ENABLE
-
diff --git a/keyboards/crkbd/keymaps/vayashiko/keymap.c b/keyboards/crkbd/keymaps/vayashiko/keymap.c
index a1a8f7e9f5b..ecb629f30d9 100644
--- a/keyboards/crkbd/keymaps/vayashiko/keymap.c
+++ b/keyboards/crkbd/keymaps/vayashiko/keymap.c
@@ -164,13 +164,14 @@ void oled_render_logo(void) {
oled_write_P(crkbd_logo, false);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_master) {
oled_render_layer_state();
oled_render_keylog();
} else {
oled_render_logo();
}
+ return false;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/crkbd/keymaps/vayashiko/rules.mk b/keyboards/crkbd/keymaps/vayashiko/rules.mk
index 16deaf45d1d..b8ba8384223 100644
--- a/keyboards/crkbd/keymaps/vayashiko/rules.mk
+++ b/keyboards/crkbd/keymaps/vayashiko/rules.mk
@@ -3,7 +3,7 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
diff --git a/keyboards/crkbd/keymaps/via/keymap.c b/keyboards/crkbd/keymaps/via/keymap.c
index cbaeb93f6d8..12c86f6bbce 100644
--- a/keyboards/crkbd/keymaps/via/keymap.c
+++ b/keyboards/crkbd/keymaps/via/keymap.c
@@ -158,13 +158,14 @@ void oled_render_logo(void) {
oled_write_P(crkbd_logo, false);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
oled_render_layer_state();
oled_render_keylog();
} else {
oled_render_logo();
}
+ return false;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/crkbd/keymaps/xyverz/keymap.c b/keyboards/crkbd/keymaps/xyverz/keymap.c
index d99d9d6baf0..0b7fc0a0ac7 100644
--- a/keyboards/crkbd/keymaps/xyverz/keymap.c
+++ b/keyboards/crkbd/keymaps/xyverz/keymap.c
@@ -187,13 +187,14 @@ void oled_render_logo(void) {
oled_write_P(crkbd_logo, false);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
oled_render_layer_state();
oled_render_keylog();
} else {
oled_render_logo();
}
+ return false;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/crkbd/readme.md b/keyboards/crkbd/readme.md
index f3bf152d20e..64b51f54f05 100644
--- a/keyboards/crkbd/readme.md
+++ b/keyboards/crkbd/readme.md
@@ -56,34 +56,54 @@ And in your `config.h` file, add the following:
/* Disable the animations you don't want/need. You will need to disable a good number of these *
* because they take up a lot of space. Disable until you can successfully compile your firmware. */
-// # define DISABLE_RGB_MATRIX_ALPHAS_MODS
-// # define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// # define DISABLE_RGB_MATRIX_BREATHING
-// # define DISABLE_RGB_MATRIX_CYCLE_ALL
-// # define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-// # define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-// # define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-// # define DISABLE_RGB_MATRIX_DUAL_BEACON
-// # define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-// # define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// # define DISABLE_RGB_MATRIX_RAINDROPS
-// # define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define DISABLE_RGB_MATRIX_SPLASH
-// # define DISABLE_RGB_MATRIX_MULTISPLASH
-// # define DISABLE_RGB_MATRIX_SOLID_SPLASH
-// # define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+// 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
```
diff --git a/keyboards/crkbd/rules.mk b/keyboards/crkbd/rules.mk
index 75a54ada0d0..8169e78ae8c 100644
--- a/keyboards/crkbd/rules.mk
+++ b/keyboards/crkbd/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/cu24/config.h b/keyboards/cu24/config.h
index 78dcabb0c85..a2a4e727ff6 100644
--- a/keyboards/cu24/config.h
+++ b/keyboards/cu24/config.h
@@ -14,8 +14,7 @@
* along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -111,5 +110,3 @@
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/cu24/cu24.h b/keyboards/cu24/cu24.h
index d329182d238..8e3daa4758a 100644
--- a/keyboards/cu24/cu24.h
+++ b/keyboards/cu24/cu24.h
@@ -13,11 +13,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef CU24_H
-#define CU24_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
// The first section contains all of the arguments
@@ -28,34 +30,28 @@
k20, k21, k22, k23, \
k30, k31, k32, k33, \
k40, k41, k42, k43, \
- k50, k51, k52, k53 \
-) \
-{ \
+ k50, k51, k52, k53 \
+) { \
{ k00, k01, k02, k03 }, \
{ k10, k11, k12, k13 }, \
{ k20, k21, k22, k23 }, \
{ k30, k31, k32, k33 }, \
{ k40, k41, k42, k43 }, \
- { k50, k51, k52, k53 } \
+ { k50, k51, k52, k53 } \
}
#define LAYOUT_numpad( \
k00, k01, k02, k03, \
k10, k11, k12, k13, \
k20, k21, k22, k23, \
- k30, k31, k32, \
+ k30, k31, k32, \
k40, k41, k42, k43, \
- k51, k52 \
-) \
-{ \
- { k00, k01, k02, k03 }, \
- { k10, k11, k12, k13 }, \
- { k20, k21, k22, k23 }, \
- { k30, k31, k32, KC_NO }, \
- { k40, k41, k42, k43 }, \
- { KC_NO, k51, k52, KC_NO } \
+ k51, k52 \
+) { \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, k23 }, \
+ { k30, k31, k32, XXX }, \
+ { k40, k41, k42, k43 }, \
+ { XXX, k51, k52, XXX } \
}
-
-
-
-#endif
diff --git a/keyboards/cu75/config.h b/keyboards/cu75/config.h
index a45cc654f61..cfcb08cce1b 100644
--- a/keyboards/cu75/config.h
+++ b/keyboards/cu75/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -93,5 +92,3 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/cu75/cu75.h b/keyboards/cu75/cu75.h
index 7774187b4f0..444c8daaec9 100644
--- a/keyboards/cu75/cu75.h
+++ b/keyboards/cu75/cu75.h
@@ -1,5 +1,4 @@
-#ifndef CU75_H
-#define CU75_H
+#pragma once
#include "quantum.h"
#include "matrix.h"
@@ -40,71 +39,71 @@ enum action_functions {
void reset_keyboard_kb(void);
void click(uint16_t freq, uint16_t duration);
+#define XXX KC_NO
+
/* Vanilla Keymap */
// This a shortcut to help you visually see your layout.
/*
* ,-------------------------------------------------------------------------------.
-* | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F | 0G |
+* | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F |
* |-------------------------------------------------------------------------------|
-* | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1A | 1B | 1C | 1D | 1E | 1G |
+* | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1A | 1B | 1C | 1D | 1F |
* |-------------------------------------------------------------------------------|
-* | 21 | 22 |23 | 24 | 25 | 26 | 27 | 28 | 29 | 2A | 2B | 2C | 2D | 2E | 2F |
+* | 20 | 21 |22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 2A | 2B | 2C | 2D | 2E |
* |-------------------------------------------------------------------------------|
-* | 31 | 32 |33 | 34 | 35 | 36 | 37 | 38 | 39 | 3A | 3B | 3C | 3D | 3F |
+* | 30 | 31 |32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 3A | 3B | 3C | 3E |
* |-------------------------------------------------------------------------------|
-* | 41 | 42 |43 | 45 | 46 | 47 | 48 | 49 | 4A | 4B | 4C | 4D | 4E | 4F |
+* | 40 | 42 |43 | 44 | 45 | 46 | 47 | 48 | 49 | 4A | 4B | 4C | 4D | 4E |
* |-------------------------------------------------------------------------------|
-* | 51 | 52 | 53 | 54 | 57 | 59 | 5A | 5B | 5C | 5D | 5E | 5F |
+* | 50 | 51 | 52 | 53 | 56 | 58 | 59 | 5A | 5B | 5C | 5D | 5E |
* `-------------------------------------------------------------------------------'
*/
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, \
- k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1G, \
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \
- k41, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, \
- k51, k52, k53, k54, k57, k59, k5A, k5B, k5C, k5D, k5E, k5F \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, \
+ k40, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, \
+ k50, k51, k52, k53, k56, k58, k59, k5A, k5B, k5C, k5D, k5E \
) { \
- {k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G}, \
- {k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, KC_NO, k1G}, \
- {k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, KC_NO}, \
- {k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, KC_NO, k3F, KC_NO}, \
- {k41, KC_NO, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, KC_NO}, \
- {k51, k52, k53, k54, KC_NO, KC_NO, k57, KC_NO, k59, k5A, k5B, k5C, k5D, k5E, k5F, KC_NO}, \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, XXX, k3E, XXX }, \
+ { k40, XXX, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, XXX }, \
+ { k50, k51, k52, k53, XXX, XXX, k56, XXX, k58, k59, k5A, k5B, k5C, k5D, k5E, XXX } \
}
#define LAYOUT_all( \
- k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, \
- k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, \
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
- k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, \
- k51, k52, k53, k54, k57, k59, k5A, k5B, k5C, k5D, k5E, k5F \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, \
+ k50, k51, k52, k53, k56, k58, k59, k5A, k5B, k5C, k5D, k5E \
) { \
- {k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G}, \
- {k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G}, \
- {k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, KC_NO}, \
- {k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, KC_NO}, \
- {k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, KC_NO}, \
- {k51, k52, k53, k54, KC_NO, KC_NO, k57, KC_NO, k59, k5A, k5B, k5C, k5D, k5E, k5F, KC_NO}, \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, XXX }, \
+ { k50, k51, k52, k53, XXX, XXX, k56, XXX, k58, k59, k5A, k5B, k5C, k5D, k5E, XXX } \
}
#define LAYOUT_iso( \
- k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, \
- k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1G, \
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \
- k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, \
- k51, k52, k53, k54, k57, k59, k5A, k5B, k5C, k5D, k5E, k5F \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, \
+ k50, k51, k52, k53, k56, k58, k59, k5A, k5B, k5C, k5D, k5E \
) { \
- {k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G}, \
- {k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, KC_NO, k1G}, \
- {k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, KC_NO}, \
- {k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, KC_NO, k3F, KC_NO}, \
- {k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, KC_NO}, \
- {k51, k52, k53, k54, KC_NO, KC_NO, k57, KC_NO, k59, k5A, k5B, k5C, k5D, k5E, k5F, KC_NO}, \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, XXX, k3E, XXX }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, XXX }, \
+ { k50, k51, k52, k53, XXX, XXX, k56, XXX, k58, k59, k5A, k5B, k5C, k5D, k5E, XXX } \
}
-
-#endif //CU75_H
diff --git a/keyboards/cu80/rules.mk b/keyboards/cu80/rules.mk
index 9b5768ea52c..10102e2abfc 100644
--- a/keyboards/cu80/rules.mk
+++ b/keyboards/cu80/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/custommk/genesis/rev2/rules.mk b/keyboards/custommk/genesis/rev2/rules.mk
index eb66cf5f241..a22df8f75ff 100644
--- a/keyboards/custommk/genesis/rev2/rules.mk
+++ b/keyboards/custommk/genesis/rev2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/custommk/genesis/rules.mk b/keyboards/custommk/genesis/rules.mk
index e417e223b30..ed95e6fd073 100644
--- a/keyboards/custommk/genesis/rules.mk
+++ b/keyboards/custommk/genesis/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/cutie_club/borsdorf/rules.mk b/keyboards/cutie_club/borsdorf/rules.mk
index 3b7c0cacf3f..e2d46fe667c 100644
--- a/keyboards/cutie_club/borsdorf/rules.mk
+++ b/keyboards/cutie_club/borsdorf/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/cutie_club/giant_macro_pad/rules.mk b/keyboards/cutie_club/giant_macro_pad/rules.mk
index 3b7c0cacf3f..e2d46fe667c 100755
--- a/keyboards/cutie_club/giant_macro_pad/rules.mk
+++ b/keyboards/cutie_club/giant_macro_pad/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/cutie_club/keebcats/denis/config.h b/keyboards/cutie_club/keebcats/denis/config.h
new file mode 100644
index 00000000000..473b6906346
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/denis/config.h
@@ -0,0 +1,50 @@
+/* Copyright 2021 Cutie Club
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFB9C
+#define PRODUCT_ID 0xB260
+#define DEVICE_VER 0x0000
+#define MANUFACTURER Cutie Club
+#define PRODUCT Keebcats Denis 60%
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ */
+#define MATRIX_ROW_PINS { B2, D0, F5, F4, F1 }
+#define MATRIX_COL_PINS { E6, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1 }
+#define UNUSED_PINS { B0, B1, B7 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+#define LED_CAPS_LOCK_PIN F0
+
+/* 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
diff --git a/keyboards/cutie_club/keebcats/denis/denis.c b/keyboards/cutie_club/keebcats/denis/denis.c
new file mode 100644
index 00000000000..c661e8cbb53
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/denis/denis.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Cutie Club
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General 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 "denis.h"
diff --git a/keyboards/cutie_club/keebcats/denis/denis.h b/keyboards/cutie_club/keebcats/denis/denis.h
new file mode 100644
index 00000000000..7ba152b8eaf
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/denis/denis.h
@@ -0,0 +1,155 @@
+/* Copyright 2021 Cutie Club
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, \
+ k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \
+ k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, \
+ k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, \
+ k04_00, k04_01, k04_02, k04_04, k04_06, k04_08, k04_10, k04_11, k04_12, k04_13 \
+) \
+{ \
+ { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14 }, \
+ { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \
+ { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO }, \
+ { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO }, \
+ { k04_00, k04_01, k04_02, KC_NO, k04_04, KC_NO, k04_06, KC_NO, k04_08, KC_NO, k04_10, k04_11, k04_12, k04_13, KC_NO } \
+}
+
+#define LAYOUT_60_ansi( \
+ k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_14, \
+ k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \
+ k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_13, \
+ k03_00, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, \
+ k04_00, k04_01, k04_02, k04_06, k04_10, k04_11, k04_12, k04_13 \
+) \
+{ \
+ { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, KC_NO, k00_14 }, \
+ { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \
+ { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, KC_NO, k02_13, KC_NO }, \
+ { k03_00, KC_NO, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, KC_NO, KC_NO }, \
+ { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, k04_10, k04_11, k04_12, k04_13, KC_NO } \
+}
+
+#define LAYOUT_60_ansi_split_bs_rshift( \
+ k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, \
+ k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \
+ k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_13, \
+ k03_00, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, \
+ k04_00, k04_01, k04_02, k04_06, k04_10, k04_11, k04_12, k04_13 \
+) \
+{ \
+ { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14 }, \
+ { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \
+ { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, KC_NO, k02_13, KC_NO }, \
+ { k03_00, KC_NO, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO }, \
+ { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, k04_10, k04_11, k04_12, k04_13, KC_NO } \
+}
+
+#define LAYOUT_60_ansi_tsangan( \
+ k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_14, \
+ k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \
+ k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_13, \
+ k03_00, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, \
+ k04_00, k04_01, k04_02, k04_06, k04_11, k04_12, k04_13 \
+) \
+{ \
+ { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, KC_NO, k00_14 }, \
+ { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \
+ { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, KC_NO, k02_13, KC_NO }, \
+ { k03_00, KC_NO, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, KC_NO, KC_NO }, \
+ { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, KC_NO, k04_11, k04_12, k04_13, KC_NO } \
+}
+
+#define LAYOUT_60_hhkb( \
+ k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, \
+ k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \
+ k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_13, \
+ k03_00, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, \
+ k04_01, k04_02, k04_06, k04_11, k04_12 \
+) \
+{ \
+ { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14 }, \
+ { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \
+ { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, KC_NO, k02_13, KC_NO }, \
+ { k03_00, KC_NO, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO }, \
+ { KC_NO, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, KC_NO, k04_11, k04_12, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_60_tsangan_hhkb( \
+ k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, \
+ k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \
+ k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_13, \
+ k03_00, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, \
+ k04_00, k04_01, k04_02, k04_06, k04_11, k04_12, k04_13 \
+) \
+{ \
+ { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14 }, \
+ { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \
+ { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, KC_NO, k02_13, KC_NO }, \
+ { k03_00, KC_NO, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO }, \
+ { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, KC_NO, k04_11, k04_12, k04_13, KC_NO } \
+}
+
+
+#define LAYOUT_60_iso( \
+ k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_14, \
+ k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, \
+ k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, \
+ k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, \
+ k04_00, k04_01, k04_02, k04_06, k04_10, k04_11, k04_12, k04_13 \
+) \
+{ \
+ { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, KC_NO, k00_14 }, \
+ { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, KC_NO, KC_NO }, \
+ { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO }, \
+ { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, KC_NO, KC_NO }, \
+ { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, k04_10, k04_11, k04_12, k04_13, KC_NO } \
+}
+
+#define LAYOUT_60_iso_split_bs_rshift( \
+ k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, \
+ k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, \
+ k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, \
+ k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, \
+ k04_00, k04_01, k04_02, k04_06, k04_10, k04_11, k04_12, k04_13 \
+) \
+{ \
+ { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14 }, \
+ { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, KC_NO, KC_NO }, \
+ { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO }, \
+ { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO }, \
+ { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, k04_10, k04_11, k04_12, k04_13, KC_NO } \
+}
+
+#define LAYOUT_60_iso_tsangan( \
+ k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_14, \
+ k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, \
+ k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, \
+ k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, \
+ k04_00, k04_01, k04_02, k04_06, k04_11, k04_12, k04_13 \
+) \
+{ \
+ { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, KC_NO, k00_14 }, \
+ { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, KC_NO, KC_NO }, \
+ { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO }, \
+ { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, KC_NO, KC_NO }, \
+ { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, KC_NO, k04_11, k04_12, k04_13, KC_NO } \
+}
diff --git a/keyboards/cutie_club/keebcats/denis/info.json b/keyboards/cutie_club/keebcats/denis/info.json
new file mode 100644
index 00000000000..a19a16a15ce
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/denis/info.json
@@ -0,0 +1,209 @@
+{
+ "keyboard_name": "Keebcats Denis",
+ "url": "",
+ "maintainer": "Cutie Club",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 12, "y": 0 },
+ { "x": 13, "y": 0 },
+ { "x": 14, "y": 0 },
+ { "x": 0, "y": 1, "w": 1.5 },
+ { "x": 1.5, "y": 1 },
+ { "x": 2.5, "y": 1 },
+ { "x": 3.5, "y": 1 },
+ { "x": 4.5, "y": 1 },
+ { "x": 5.5, "y": 1 },
+ { "x": 6.5, "y": 1 },
+ { "x": 7.5, "y": 1 },
+ { "x": 8.5, "y": 1 },
+ { "x": 9.5, "y": 1 },
+ { "x": 10.5, "y": 1 },
+ { "x": 11.5, "y": 1 },
+ { "x": 12.5, "y": 1 },
+ { "x": 13.5, "y": 1, "w": 1.5 },
+ { "x": 0, "y": 2, "w": 1.75 },
+ { "x": 1.75, "y": 2 },
+ { "x": 2.75, "y": 2 },
+ { "x": 3.75, "y": 2 },
+ { "x": 4.75, "y": 2 },
+ { "x": 5.75, "y": 2 },
+ { "x": 6.75, "y": 2 },
+ { "x": 7.75, "y": 2 },
+ { "x": 8.75, "y": 2 },
+ { "x": 9.75, "y": 2 },
+ { "x": 10.75, "y": 2 },
+ { "x": 11.75, "y": 2 },
+ { "x": 12.75, "y": 2 },
+ { "x": 14, "y": 2 },
+ { "x": 0, "y": 3, "w": 1.25 },
+ { "x": 1.25, "y": 3 },
+ { "x": 2.25, "y": 3 },
+ { "x": 3.25, "y": 3 },
+ { "x": 4.25, "y": 3 },
+ { "x": 5.25, "y": 3 },
+ { "x": 6.25, "y": 3 },
+ { "x": 7.25, "y": 3 },
+ { "x": 8.25, "y": 3 },
+ { "x": 9.25, "y": 3 },
+ { "x": 10.25, "y": 3 },
+ { "x": 11.25, "y": 3 },
+ { "x": 12.25, "y": 3, "w": 1.75 },
+ { "x": 14, "y": 3 },
+ { "x": 0, "y": 4, "w": 1.25 },
+ { "x": 1.25, "y": 4, "w": 1.25 },
+ { "x": 2.5, "y": 4, "w": 1.25 },
+ { "x": 3.75, "y": 4, "w": 2.25 },
+ { "x": 6, "y": 4, "w": 1.25 },
+ { "x": 7.25, "y": 4, "w": 2.75 },
+ { "x": 10, "y": 4, "w": 1.25 },
+ { "x": 11.25, "y": 4, "w": 1.25 },
+ { "x": 12.5, "y": 4, "w": 1.25 },
+ { "x": 13.75, "y": 4, "w": 1.25 }
+ ]
+ },
+ "LAYOUT_60_iso": {
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 12, "y": 0 },
+ { "x": 13, "y": 0, "w": 2 },
+ { "x": 0, "y": 1, "w": 1.5 },
+ { "x": 1.5, "y": 1 },
+ { "x": 2.5, "y": 1 },
+ { "x": 3.5, "y": 1 },
+ { "x": 4.5, "y": 1 },
+ { "x": 5.5, "y": 1 },
+ { "x": 6.5, "y": 1 },
+ { "x": 7.5, "y": 1 },
+ { "x": 8.5, "y": 1 },
+ { "x": 9.5, "y": 1 },
+ { "x": 10.5, "y": 1 },
+ { "x": 11.5, "y": 1 },
+ { "x": 12.5, "y": 1 },
+ { "x": 13.75, "y": 1, "w": 1.25, "h": 2 },
+ { "x": 0, "y": 2, "w": 1.75 },
+ { "x": 1.75, "y": 2 },
+ { "x": 2.75, "y": 2 },
+ { "x": 3.75, "y": 2 },
+ { "x": 4.75, "y": 2 },
+ { "x": 5.75, "y": 2 },
+ { "x": 6.75, "y": 2 },
+ { "x": 7.75, "y": 2 },
+ { "x": 8.75, "y": 2 },
+ { "x": 9.75, "y": 2 },
+ { "x": 10.75, "y": 2 },
+ { "x": 11.75, "y": 2 },
+ { "x": 12.75, "y": 2 },
+ { "x": 0, "y": 3, "w": 1.25 },
+ { "x": 1.25, "y": 3 },
+ { "x": 2.25, "y": 3 },
+ { "x": 3.25, "y": 3 },
+ { "x": 4.25, "y": 3 },
+ { "x": 5.25, "y": 3 },
+ { "x": 6.25, "y": 3 },
+ { "x": 7.25, "y": 3 },
+ { "x": 8.25, "y": 3 },
+ { "x": 9.25, "y": 3 },
+ { "x": 10.25, "y": 3 },
+ { "x": 11.25, "y": 3 },
+ { "x": 12.25, "y": 3, "w": 2.75 },
+ { "x": 0, "y": 4, "w": 1.25 },
+ { "x": 1.25, "y": 4, "w": 1.25 },
+ { "x": 2.5, "y": 4, "w": 1.25 },
+ { "x": 3.75, "y": 4, "w": 6.25 },
+ { "x": 10, "y": 4, "w": 1.25 },
+ { "x": 11.25, "y": 4, "w": 1.25 },
+ { "x": 12.5, "y": 4, "w": 1.25 },
+ { "x": 13.75, "y": 4, "w": 1.25 }
+ ]
+ },
+ "LAYOUT_60_ansi": {
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 12, "y": 0 },
+ { "x": 13, "y": 0, "w": 2 },
+ { "x": 0, "y": 1, "w": 1.5 },
+ { "x": 1.5, "y": 1 },
+ { "x": 2.5, "y": 1 },
+ { "x": 3.5, "y": 1 },
+ { "x": 4.5, "y": 1 },
+ { "x": 5.5, "y": 1 },
+ { "x": 6.5, "y": 1 },
+ { "x": 7.5, "y": 1 },
+ { "x": 8.5, "y": 1 },
+ { "x": 9.5, "y": 1 },
+ { "x": 10.5, "y": 1 },
+ { "x": 11.5, "y": 1 },
+ { "x": 12.5, "y": 1 },
+ { "x": 13.75, "y": 1, "w": 1.25 },
+ { "x": 0, "y": 2, "w": 1.75 },
+ { "x": 1.75, "y": 2 },
+ { "x": 2.75, "y": 2 },
+ { "x": 3.75, "y": 2 },
+ { "x": 4.75, "y": 2 },
+ { "x": 5.75, "y": 2 },
+ { "x": 6.75, "y": 2 },
+ { "x": 7.75, "y": 2 },
+ { "x": 8.75, "y": 2 },
+ { "x": 9.75, "y": 2 },
+ { "x": 10.75, "y": 2 },
+ { "x": 11.75, "y": 2 },
+ { "x": 12.75, "y": 2, "w": 2.25 },
+ { "x": 0, "y": 3, "w": 2.25 },
+ { "x": 2.25, "y": 3 },
+ { "x": 3.25, "y": 3 },
+ { "x": 4.25, "y": 3 },
+ { "x": 5.25, "y": 3 },
+ { "x": 6.25, "y": 3 },
+ { "x": 7.25, "y": 3 },
+ { "x": 8.25, "y": 3 },
+ { "x": 9.25, "y": 3 },
+ { "x": 10.25, "y": 3 },
+ { "x": 11.25, "y": 3 },
+ { "x": 12.25, "y": 3, "w": 2.75 },
+ { "x": 0, "y": 4, "w": 1.25 },
+ { "x": 1.25, "y": 4, "w": 1.25 },
+ { "x": 2.5, "y": 4, "w": 1.25 },
+ { "x": 3.75, "y": 4, "w": 6.25 },
+ { "x": 10, "y": 4, "w": 1.25 },
+ { "x": 11.25, "y": 4, "w": 1.25 },
+ { "x": 12.5, "y": 4, "w": 1.25 },
+ { "x": 13.75, "y": 4, "w": 1.25 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cutie_club/keebcats/denis/keymaps/default/keymap.c b/keyboards/cutie_club/keebcats/denis/keymaps/default/keymap.c
new file mode 100644
index 00000000000..3dbf5dc5b53
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/denis/keymaps/default/keymap.c
@@ -0,0 +1,28 @@
+/* Copyright 2021 Cutie Club
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTRL
+ )
+};
diff --git a/keyboards/cutie_club/keebcats/denis/keymaps/via/keymap.c b/keyboards/cutie_club/keebcats/denis/keymaps/via/keymap.c
new file mode 100644
index 00000000000..b7fa4f154fd
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/denis/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 Cutie Club
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTRL
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/kprepublic/bm68rgb/keymaps/via/rules.mk b/keyboards/cutie_club/keebcats/denis/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/kprepublic/bm68rgb/keymaps/via/rules.mk
rename to keyboards/cutie_club/keebcats/denis/keymaps/via/rules.mk
diff --git a/keyboards/cutie_club/keebcats/denis/readme.md b/keyboards/cutie_club/keebcats/denis/readme.md
new file mode 100644
index 00000000000..5f734e7e935
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/denis/readme.md
@@ -0,0 +1,18 @@
+# Denis
+
+* Keyboard Maintainer: [Cutie Club](https://github.com/cutie-club/)
+* Hardware Supported: Atmega32u4 based 60% PCB, with wide compatibility
+* Hardware Availability: [Keebcats](https://keebcats.co.uk)
+
+## Bootloader
+
+Enter the bootloader in 2 ways with the default configuration:
+
+* **Bootmagic reset**: Hold down the key at top left key (matrix position 0,0) and plug the device in
+* **Physical reset button**: Press the button marked reset on the back of the PCB
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cutie_club/keebcats/denis:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/cutie_club/keebcats/denis/rules.mk b/keyboards/cutie_club/keebcats/denis/rules.mk
new file mode 100644
index 00000000000..07f5fabc065
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/denis/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable bootmagic
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = 60_iso_tsangan 60_iso_split_bs_rshift 60_iso 60_tsangan_hhkb 60_hhkb 60_ansi_tsangan 60_ansi_split_bs_rshift 60_ansi
diff --git a/keyboards/cutie_club/keebcats/dougal/config.h b/keyboards/cutie_club/keebcats/dougal/config.h
new file mode 100644
index 00000000000..05160322c4b
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/dougal/config.h
@@ -0,0 +1,50 @@
+/* Copyright 2021 Cutie Club
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFB9C
+#define PRODUCT_ID 0xB265
+#define DEVICE_VER 0x0000
+#define MANUFACTURER Cutie Club
+#define PRODUCT Keebcats Dougal 65%
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+/*
+ * Keyboard Matrix Assignments
+ */
+#define MATRIX_ROW_PINS { B2, D0, F5, F4, F1 }
+#define MATRIX_COL_PINS { E6, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, B7 }
+#define UNUSED_PINS { B0, B1, B3 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+#define LED_CAPS_LOCK_PIN F0
+
+/* 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
diff --git a/keyboards/cutie_club/keebcats/dougal/dougal.c b/keyboards/cutie_club/keebcats/dougal/dougal.c
new file mode 100644
index 00000000000..8f247bd2879
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/dougal/dougal.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Cutie Club
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General 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 "dougal.h"
diff --git a/keyboards/cutie_club/keebcats/dougal/dougal.h b/keyboards/cutie_club/keebcats/dougal/dougal.h
new file mode 100644
index 00000000000..cd0fa1d2cd9
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/dougal/dougal.h
@@ -0,0 +1,34 @@
+/* Copyright 2021 Cutie Club
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, k00_15, \
+ k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, k01_15, \
+ k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, k02_15, \
+ k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, k03_15, \
+ k04_00, k04_01, k04_02, k04_04, k04_06, k04_08, k04_09, k04_10, k04_11, k04_12, k04_13, k04_15 \
+) \
+{ \
+ { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, k00_15 }, \
+ { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO, k01_15 }, \
+ { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO, k02_15 }, \
+ { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO, k03_15 }, \
+ { k04_00, k04_01, k04_02, KC_NO, k04_04, KC_NO, k04_06, KC_NO, k04_08, k04_09, k04_10, k04_11, k04_12, k04_13, KC_NO, k04_15 } \
+}
diff --git a/keyboards/cutie_club/keebcats/dougal/info.json b/keyboards/cutie_club/keebcats/dougal/info.json
new file mode 100644
index 00000000000..70c804e20d6
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/dougal/info.json
@@ -0,0 +1,84 @@
+{
+ "keyboard_name": "Keebcats Dougal",
+ "url": "",
+ "maintainer": "Cutie Club",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 12, "y": 0 },
+ { "x": 13, "y": 0 },
+ { "x": 14, "y": 0 },
+ { "x": 15, "y": 0 },
+ { "x": 0, "y": 1, "w": 1.5 },
+ { "x": 1.5, "y": 1 },
+ { "x": 2.5, "y": 1 },
+ { "x": 3.5, "y": 1 },
+ { "x": 4.5, "y": 1 },
+ { "x": 5.5, "y": 1 },
+ { "x": 6.5, "y": 1 },
+ { "x": 7.5, "y": 1 },
+ { "x": 8.5, "y": 1 },
+ { "x": 9.5, "y": 1 },
+ { "x": 10.5, "y": 1 },
+ { "x": 11.5, "y": 1 },
+ { "x": 12.5, "y": 1 },
+ { "x": 13.5, "y": 1, "w": 1.5 },
+ { "x": 15, "y": 1 },
+ { "x": 0, "y": 2, "w": 1.75 },
+ { "x": 1.75, "y": 2 },
+ { "x": 2.75, "y": 2 },
+ { "x": 3.75, "y": 2 },
+ { "x": 4.75, "y": 2 },
+ { "x": 5.75, "y": 2 },
+ { "x": 6.75, "y": 2 },
+ { "x": 7.75, "y": 2 },
+ { "x": 8.75, "y": 2 },
+ { "x": 9.75, "y": 2 },
+ { "x": 10.75, "y": 2 },
+ { "x": 11.75, "y": 2 },
+ { "x": 12.75, "y": 2 },
+ { "x": 14, "y": 2 },
+ { "x": 15, "y": 2 },
+ { "x": 0, "y": 3, "w": 1.25 },
+ { "x": 1.25, "y": 3 },
+ { "x": 2.25, "y": 3 },
+ { "x": 3.25, "y": 3 },
+ { "x": 4.25, "y": 3 },
+ { "x": 5.25, "y": 3 },
+ { "x": 6.25, "y": 3 },
+ { "x": 7.25, "y": 3 },
+ { "x": 8.25, "y": 3 },
+ { "x": 9.25, "y": 3 },
+ { "x": 10.25, "y": 3 },
+ { "x": 11.25, "y": 3 },
+ { "x": 12.25, "y": 3, "w": 1.75 },
+ { "x": 14, "y": 3 },
+ { "x": 15, "y": 3 },
+ { "x": 0, "y": 4, "w": 1.25 },
+ { "x": 1.25, "y": 4, "w": 1.25 },
+ { "x": 2.5, "y": 4, "w": 1.25 },
+ { "x": 3.75, "y": 4, "w": 2.25 },
+ { "x": 6, "y": 4, "w": 1.25 },
+ { "x": 7.25, "y": 4, "w": 2.75 },
+ { "x": 10, "y": 4 },
+ { "x": 11, "y": 4 },
+ { "x": 12, "y": 4 },
+ { "x": 13, "y": 4 },
+ { "x": 14, "y": 4 },
+ { "x": 15, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cutie_club/keebcats/dougal/keymaps/default/keymap.c b/keyboards/cutie_club/keebcats/dougal/keymaps/default/keymap.c
new file mode 100644
index 00000000000..ec3e1c21f7a
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/dougal/keymaps/default/keymap.c
@@ -0,0 +1,28 @@
+/* Copyright 2021 Cutie Club
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT
+ )
+};
diff --git a/keyboards/cutie_club/keebcats/dougal/keymaps/via/keymap.c b/keyboards/cutie_club/keebcats/dougal/keymaps/via/keymap.c
new file mode 100644
index 00000000000..58d184a064b
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/dougal/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 Cutie Club
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/kprepublic/bm80/keymaps/via/rules.mk b/keyboards/cutie_club/keebcats/dougal/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/kprepublic/bm80/keymaps/via/rules.mk
rename to keyboards/cutie_club/keebcats/dougal/keymaps/via/rules.mk
diff --git a/keyboards/cutie_club/keebcats/dougal/readme.md b/keyboards/cutie_club/keebcats/dougal/readme.md
new file mode 100644
index 00000000000..3c0dd932aa4
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/dougal/readme.md
@@ -0,0 +1,18 @@
+# Dougal
+
+* Keyboard Maintainer: [Cutie Club](https://github.com/cutie-club/)
+* Hardware Supported: Atmega32u4 based 65% PCB, with wide compatibility
+* Hardware Availability: [Keebcats](https://keebcats.co.uk)
+
+## Bootloader
+
+Enter the bootloader in 2 ways with the default configuration:
+
+* **Bootmagic reset**: Hold down the key at top left key (matrix position 0,0) and plug the device in
+* **Physical reset button**: Press the button marked reset on the back of the PCB
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cutie_club/keebcats/dougal:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/cutie_club/keebcats/dougal/rules.mk b/keyboards/cutie_club/keebcats/dougal/rules.mk
new file mode 100644
index 00000000000..05c513615e0
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/dougal/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cutie_club/wraith/rules.mk b/keyboards/cutie_club/wraith/rules.mk
index 575ba17005f..60c0e1b1938 100644
--- a/keyboards/cutie_club/wraith/rules.mk
+++ b/keyboards/cutie_club/wraith/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/cx60/rules.mk b/keyboards/cx60/rules.mk
index 81f481950a6..aeff331e7e1 100644
--- a/keyboards/cx60/rules.mk
+++ b/keyboards/cx60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/cybergear/macro25/rules.mk b/keyboards/cybergear/macro25/rules.mk
index 4411195da2a..9578124554c 100644
--- a/keyboards/cybergear/macro25/rules.mk
+++ b/keyboards/cybergear/macro25/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/daji/seis_cinco/rules.mk b/keyboards/daji/seis_cinco/rules.mk
index 45d9347631a..d9bb3e13aa9 100644
--- a/keyboards/daji/seis_cinco/rules.mk
+++ b/keyboards/daji/seis_cinco/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dc01/arrow/rules.mk b/keyboards/dc01/arrow/rules.mk
index d5b3fc07223..6a5dc9af064 100644
--- a/keyboards/dc01/arrow/rules.mk
+++ b/keyboards/dc01/arrow/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dc01/left/i2c.h b/keyboards/dc01/left/i2c.h
index 25e876658bb..0d93e4ecaa4 100644
--- a/keyboards/dc01/left/i2c.h
+++ b/keyboards/dc01/left/i2c.h
@@ -1,5 +1,4 @@
-#ifndef I2C_H
-#define I2C_H
+#pragma once
#include
@@ -27,5 +26,3 @@ uint8_t i2c_master_write(uint8_t data);
uint8_t i2c_master_read(int);
void i2c_reset_state(void);
void i2c_slave_init(uint8_t address);
-
-#endif
diff --git a/keyboards/dc01/left/rules.mk b/keyboards/dc01/left/rules.mk
index 7dbd6bcc03e..c39b1507ecf 100644
--- a/keyboards/dc01/left/rules.mk
+++ b/keyboards/dc01/left/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dc01/numpad/rules.mk b/keyboards/dc01/numpad/rules.mk
index a0c9849a472..16653ef8a04 100644
--- a/keyboards/dc01/numpad/rules.mk
+++ b/keyboards/dc01/numpad/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dc01/right/rules.mk b/keyboards/dc01/right/rules.mk
index d5b3fc07223..6a5dc9af064 100644
--- a/keyboards/dc01/right/rules.mk
+++ b/keyboards/dc01/right/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dekunukem/duckypad/config.h b/keyboards/dekunukem/duckypad/config.h
index 2f1b2ef32ca..06f2ae807d4 100644
--- a/keyboards/dekunukem/duckypad/config.h
+++ b/keyboards/dekunukem/duckypad/config.h
@@ -42,12 +42,59 @@ along with this program. If not, see .
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#define RGB_MATRIX_STARTUP_HUE 221
-
+// 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
-#define I2C1_SCL 8
-#define I2C1_SDA 9
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
#define I2C1_SCL_PAL_MODE 1
#define I2C1_SDA_PAL_MODE 1
diff --git a/keyboards/dekunukem/duckypad/keymaps/default/keymap.c b/keyboards/dekunukem/duckypad/keymaps/default/keymap.c
index a87caa2cdd4..3b74640fe6d 100644
--- a/keyboards/dekunukem/duckypad/keymaps/default/keymap.c
+++ b/keyboards/dekunukem/duckypad/keymaps/default/keymap.c
@@ -125,7 +125,7 @@ char* make_rgb_text(void){
return s;
};
-void oled_task_user(void) {
+bool oled_task_user(void) {
render_logo();
oled_set_cursor(0,3);
if (rgbToggled) {
@@ -137,6 +137,7 @@ void oled_task_user(void) {
oled_write_ln_P(s, false);
free(s);
}
+ return false;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/dekunukem/duckypad/keymaps/m4cs/keymap.c b/keyboards/dekunukem/duckypad/keymaps/m4cs/keymap.c
index 80b188a480a..cd8a3147390 100644
--- a/keyboards/dekunukem/duckypad/keymaps/m4cs/keymap.c
+++ b/keyboards/dekunukem/duckypad/keymaps/m4cs/keymap.c
@@ -203,7 +203,7 @@ char* make_sys_info_text(void) {
};
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (!sysToggled) {
render_logo();
oled_set_cursor(0,3);
@@ -221,6 +221,7 @@ void oled_task_user(void) {
free(s);
}
}
+ return false;
};
int concat(int a, int b) {
diff --git a/keyboards/dekunukem/duckypad/keymaps/via/keymap.c b/keyboards/dekunukem/duckypad/keymaps/via/keymap.c
index 5d11b6d6c87..01baaeb5937 100644
--- a/keyboards/dekunukem/duckypad/keymaps/via/keymap.c
+++ b/keyboards/dekunukem/duckypad/keymaps/via/keymap.c
@@ -67,7 +67,7 @@ static void render_logo(void) {
oled_write_raw_P(ducky_logo, LOGO_SIZE);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
render_logo();
+ return false;
}
-
diff --git a/keyboards/delikeeb/flatbread60/rules.mk b/keyboards/delikeeb/flatbread60/rules.mk
index 1c21efcda41..5aa5e7a9058 100644
--- a/keyboards/delikeeb/flatbread60/rules.mk
+++ b/keyboards/delikeeb/flatbread60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/delikeeb/vaguettelite/rules.mk b/keyboards/delikeeb/vaguettelite/rules.mk
index 1bf9ed41879..599aa6616ee 100644
--- a/keyboards/delikeeb/vaguettelite/rules.mk
+++ b/keyboards/delikeeb/vaguettelite/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/delikeeb/vanana/rules.mk b/keyboards/delikeeb/vanana/rules.mk
index bd9127b4708..ee2cd517cf6 100644
--- a/keyboards/delikeeb/vanana/rules.mk
+++ b/keyboards/delikeeb/vanana/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/delikeeb/vaneela/rules.mk b/keyboards/delikeeb/vaneela/rules.mk
index 1f14fe51968..c1149216c28 100644
--- a/keyboards/delikeeb/vaneela/rules.mk
+++ b/keyboards/delikeeb/vaneela/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/delikeeb/vaneelaex/rules.mk b/keyboards/delikeeb/vaneelaex/rules.mk
index 1f14fe51968..c1149216c28 100644
--- a/keyboards/delikeeb/vaneelaex/rules.mk
+++ b/keyboards/delikeeb/vaneelaex/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/delikeeb/waaffle/rev3/rules.mk b/keyboards/delikeeb/waaffle/rev3/rules.mk
index a4b9ea39339..130155735db 100644
--- a/keyboards/delikeeb/waaffle/rev3/rules.mk
+++ b/keyboards/delikeeb/waaffle/rev3/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/delilah/rules.mk b/keyboards/delilah/rules.mk
index 59c60ebbecf..438c9fdf739 100644
--- a/keyboards/delilah/rules.mk
+++ b/keyboards/delilah/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dichotomy/config.h b/keyboards/dichotomy/config.h
index 0cdaf776b46..03e19b13883 100644
--- a/keyboards/dichotomy/config.h
+++ b/keyboards/dichotomy/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -66,5 +65,3 @@ along with this program. If not, see .
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
-
-#endif
diff --git a/keyboards/dichotomy/dichotomy.h b/keyboards/dichotomy/dichotomy.h
index 2023259b111..37372d6496f 100755
--- a/keyboards/dichotomy/dichotomy.h
+++ b/keyboards/dichotomy/dichotomy.h
@@ -1,5 +1,4 @@
-#ifndef DICHOTOMY_H
-#define DICHOTOMY_H
+#pragma once
#include "report.h"
#include "pointing_device.h"
@@ -25,22 +24,21 @@
#define set_led_cyan() red_led_off(); grn_led_on(); blu_led_on()
#define set_led_white() red_led_on(); grn_led_on(); blu_led_on()
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
- k33, k34, k35, k36, k37, k38, \
- k42, k43, k44, k45, k46, k47, k48, k49 \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
- { KC_NO, KC_NO, KC_NO, k33, k34, k35, k36, k37, k38, KC_NO, KC_NO, KC_NO }, \
- { KC_NO, KC_NO, k42, k43, k44, k45, k46, k47, k48, k49, KC_NO, KC_NO } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k33, k34, k35, k36, k37, k38, \
+ k42, k43, k44, k45, k46, k47, k48, k49 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { XXX, XXX, XXX, k33, k34, k35, k36, k37, k38, XXX, XXX, XXX }, \
+ { XXX, XXX, k42, k43, k44, k45, k46, k47, k48, k49, XXX, XXX } \
}
-
-#endif
diff --git a/keyboards/diverge3/diverge3.h b/keyboards/diverge3/diverge3.h
index 53364213f6e..c668bb29efa 100644
--- a/keyboards/diverge3/diverge3.h
+++ b/keyboards/diverge3/diverge3.h
@@ -13,8 +13,8 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef DIVERGE3_H
-#define DIVERGE3_H
+
+#pragma once
#include "quantum.h"
@@ -26,24 +26,25 @@
#endif
#endif
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
- L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
- L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
- L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
- L40, L41, L42, L43, L44, LT0, LT1, LT2, RT2, RT1, RT0, R40, R41, R42, R43, R44 \
+ 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, LT0, LT1, LT2, RT2, RT1, RT0, R40, R41, R42, R43, R44 \
) { \
- { L00, L01, L02, L03, L04, L05, L06, KC_NO }, \
- { L10, L11, L12, L13, L14, L15, L16, KC_NO }, \
- { L20, L21, L22, L23, L24, L25, L26, KC_NO }, \
- { L30, L31, L32, L33, L34, L35, L36, KC_NO }, \
- { L40, L41, L42, L43, L44, LT0, LT1, LT2 }, \
- { R06, R05, R04, R03, R02, R01, R00, KC_NO }, \
- { R16, R15, R14, R13, R12, R11, R10, KC_NO }, \
- { R26, R25, R24, R23, R22, R21, R20, KC_NO }, \
- { R36, R35, R34, R33, R32, R31, R30, KC_NO }, \
- { R44, R43, R42, R41, R40, RT0, RT1, RT2 } \
+ { L00, L01, L02, L03, L04, L05, L06, XXX }, \
+ { L10, L11, L12, L13, L14, L15, L16, XXX }, \
+ { L20, L21, L22, L23, L24, L25, L26, XXX }, \
+ { L30, L31, L32, L33, L34, L35, L36, XXX }, \
+ { L40, L41, L42, L43, L44, LT0, LT1, LT2 }, \
+ { R06, R05, R04, R03, R02, R01, R00, XXX }, \
+ { R16, R15, R14, R13, R12, R11, R10, XXX }, \
+ { R26, R25, R24, R23, R22, R21, R20, XXX }, \
+ { R36, R35, R34, R33, R32, R31, R30, XXX }, \
+ { R44, R43, R42, R41, R40, RT0, RT1, RT2 } \
}
-#endif
diff --git a/keyboards/dk60/rules.mk b/keyboards/dk60/rules.mk
index c3c93b823cd..d23cfda0e4a 100644
--- a/keyboards/dk60/rules.mk
+++ b/keyboards/dk60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dm9records/ergoinu/post_rules.mk b/keyboards/dm9records/ergoinu/post_rules.mk
new file mode 100644
index 00000000000..02aa48104c1
--- /dev/null
+++ b/keyboards/dm9records/ergoinu/post_rules.mk
@@ -0,0 +1,9 @@
+ifneq ($(strip $(ERGOINU)),)
+ ifeq ($(findstring promicroled, $(ERGOINU)), promicroled)
+ DISABLE_PROMICRO_LEDs = no
+ endif
+endif
+
+ifeq ($(strip $(DISABLE_PROMICRO_LEDs)), yes)
+ OPT_DEFS += -DDISABLE_PROMICRO_LEDs
+endif
diff --git a/keyboards/dm9records/ergoinu/rules.mk b/keyboards/dm9records/ergoinu/rules.mk
index 04884050dca..895ce253d7d 100644
--- a/keyboards/dm9records/ergoinu/rules.mk
+++ b/keyboards/dm9records/ergoinu/rules.mk
@@ -27,13 +27,3 @@ SRC += matrix.c serial.c split_util.c
# ergoinu configs
DISABLE_PROMICRO_LEDs = yes
-
-ifneq ($(strip $(ERGOINU)),)
- ifeq ($(findstring promicroled, $(ERGOINU)), promicroled)
- DISABLE_PROMICRO_LEDs = no
- endif
-endif
-
-ifeq ($(strip $(DISABLE_PROMICRO_LEDs)), yes)
- OPT_DEFS += -DDISABLE_PROMICRO_LEDs
-endif
diff --git a/keyboards/dmqdesign/spin/keymaps/gorbachev/keymap.c b/keyboards/dmqdesign/spin/keymaps/gorbachev/keymap.c
index 181de5621c4..b41359c5b60 100644
--- a/keyboards/dmqdesign/spin/keymaps/gorbachev/keymap.c
+++ b/keyboards/dmqdesign/spin/keymaps/gorbachev/keymap.c
@@ -220,7 +220,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
#endif
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
@@ -244,5 +244,6 @@ void oled_task_user(void) {
oled_write_P(PSTR("Mode: "), false);
oled_write_ln(rgb_mode_name, false);
+ return false;
}
#endif
diff --git a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/rules.mk b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/rules.mk
index 00b815f56d6..7fe1f992aa0 100644
--- a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/rules.mk
+++ b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/rules.mk
@@ -1,6 +1,6 @@
MOUSEKEY_ENABLE = no
MIDI_ENABLE = no
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
LTO_ENABLE = yes
CONSOLE_ENABLE = yes # Console for debug
GRAVE_ESC_ENABLE = no
diff --git a/keyboards/do60/config.h b/keyboards/do60/config.h
index f3ee1ed0455..8a0f324aa29 100644
--- a/keyboards/do60/config.h
+++ b/keyboards/do60/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -75,5 +74,3 @@ along with this program. If not, see .
#define LOCKING_RESYNC_ENABLE
#define TAPPING_TERM 200
-
-#endif
diff --git a/keyboards/do60/rules.mk b/keyboards/do60/rules.mk
index ca6e2146c15..418217e096e 100644
--- a/keyboards/do60/rules.mk
+++ b/keyboards/do60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
AUDIO_ENABLE = no # Audio output
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
COMMAND_ENABLE = no # Commands for debug and configuration
CONSOLE_ENABLE = no # Console for debug
EXTRAKEY_ENABLE = yes # Audio control and System control
diff --git a/keyboards/donutcables/scrabblepad/rules.mk b/keyboards/donutcables/scrabblepad/rules.mk
index 78fbb71b4eb..b2c3b22c2a7 100644
--- a/keyboards/donutcables/scrabblepad/rules.mk
+++ b/keyboards/donutcables/scrabblepad/rules.mk
@@ -5,7 +5,7 @@ MCU = at90usb1286
BOOTLOADER = halfkay
# Build Options
-BOOTMAGIC_ENABLE = no # Enable Bootmagic
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/doodboard/duckboard/keymaps/default/keymap.c b/keyboards/doodboard/duckboard/keymaps/default/keymap.c
index e25280ff6a8..b4e6207aea4 100644
--- a/keyboards/doodboard/duckboard/keymaps/default/keymap.c
+++ b/keyboards/doodboard/duckboard/keymaps/default/keymap.c
@@ -89,7 +89,7 @@ static void render_anim(void) {
}
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
render_anim();
oled_set_cursor(0,6);
oled_write_P(PSTR("DUCK\nBOARD\n"), false);
@@ -109,6 +109,7 @@ void oled_task_user(void) {
oled_write_P(PSTR("RGB\n"), false);
break;
}
+ return false;
}
#endif
diff --git a/keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c b/keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c
index ea603cdb223..af6e469ab2a 100644
--- a/keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c
+++ b/keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c
@@ -89,7 +89,7 @@ static void render_anim(void) {
}
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
render_anim();
oled_set_cursor(0,6);
oled_write_P(PSTR("DUCK\nBOARD\n"), false);
@@ -109,6 +109,7 @@ void oled_task_user(void) {
oled_write_P(PSTR("RGB\n"), false);
break;
}
+ return false;
}
#endif
diff --git a/keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c b/keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c
index 9afc1218591..7911d9e3cc9 100644
--- a/keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c
+++ b/keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c
@@ -96,7 +96,7 @@ static void render_anim(void) {
}
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
render_anim();
oled_set_cursor(0,6);
oled_write_P(PSTR("DUCK\nBOARD\n"), false);
@@ -119,6 +119,7 @@ void oled_task_user(void) {
oled_write_P(PSTR("FN2\n"), false);
break;
}
+ return false;
}
#endif
diff --git a/keyboards/doppelganger/rules.mk b/keyboards/doppelganger/rules.mk
index 161d6da26bc..cc5477a3bdd 100644
--- a/keyboards/doppelganger/rules.mk
+++ b/keyboards/doppelganger/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/doro67/multi/keymaps/konstantin/rules.mk b/keyboards/doro67/multi/keymaps/konstantin/rules.mk
index 10ff0bc915c..7bab7513ed3 100644
--- a/keyboards/doro67/multi/keymaps/konstantin/rules.mk
+++ b/keyboards/doro67/multi/keymaps/konstantin/rules.mk
@@ -1,5 +1,5 @@
# Generic features
-BOOTMAGIC_ENABLE = yes
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
COMMAND_ENABLE = yes
CONSOLE_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/doro67/multi/rules.mk b/keyboards/doro67/multi/rules.mk
index 1318a76a252..9a09abb565b 100644
--- a/keyboards/doro67/multi/rules.mk
+++ b/keyboards/doro67/multi/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/doro67/regular/rules.mk b/keyboards/doro67/regular/rules.mk
index 77d1bbc28a6..df57d4837e0 100644
--- a/keyboards/doro67/regular/rules.mk
+++ b/keyboards/doro67/regular/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/doro67/rgb/config.h b/keyboards/doro67/rgb/config.h
index 709d3cdd3b5..b2d26b29aeb 100644
--- a/keyboards/doro67/rgb/config.h
+++ b/keyboards/doro67/rgb/config.h
@@ -56,6 +56,54 @@ along with this program. If not, see .
#define DRIVER_LED_TOTAL 67
#define RGB_MATRIX_KEYPRESSES
+// 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
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
diff --git a/keyboards/doro67/rgb/rules.mk b/keyboards/doro67/rgb/rules.mk
index 2a575b3e97c..bc9b2d2c2ce 100644
--- a/keyboards/doro67/rgb/rules.mk
+++ b/keyboards/doro67/rgb/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dp60/config.h b/keyboards/dp60/config.h
index 2593b7ff71a..f4a44206f43 100644
--- a/keyboards/dp60/config.h
+++ b/keyboards/dp60/config.h
@@ -59,3 +59,51 @@
#define DRIVER_1_LED_TOTAL 36
#define DRIVER_2_LED_TOTAL 36
#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+// 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
diff --git a/keyboards/dp60/dp60.c b/keyboards/dp60/dp60.c
index 87543b2a1c4..16aac75fa5e 100644
--- a/keyboards/dp60/dp60.c
+++ b/keyboards/dp60/dp60.c
@@ -17,7 +17,7 @@
#include "dp60.h"
#ifdef RGB_MATRIX_ENABLE
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/dp60/rules.mk b/keyboards/dp60/rules.mk
index be421280a7e..059e29016eb 100644
--- a/keyboards/dp60/rules.mk
+++ b/keyboards/dp60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/draculad/keymaps/default/keymap.c b/keyboards/draculad/keymaps/default/keymap.c
index 657ef2048db..a352359d132 100644
--- a/keyboards/draculad/keymaps/default/keymap.c
+++ b/keyboards/draculad/keymaps/default/keymap.c
@@ -186,12 +186,13 @@ static void render_status(void) {
}
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
} else {
render_logo();
}
+ return false;
}
#endif
diff --git a/keyboards/draculad/keymaps/pimoroni/keymap.c b/keyboards/draculad/keymaps/pimoroni/keymap.c
index c7b6cd35d59..b70184dbc81 100644
--- a/keyboards/draculad/keymaps/pimoroni/keymap.c
+++ b/keyboards/draculad/keymaps/pimoroni/keymap.c
@@ -200,12 +200,13 @@ static void render_status(void) {
}
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
} else {
render_logo();
}
+ return false;
}
#endif
diff --git a/keyboards/draytronics/daisy/rules.mk b/keyboards/draytronics/daisy/rules.mk
index cc1a640c3cb..d46afbf9d2e 100644
--- a/keyboards/draytronics/daisy/rules.mk
+++ b/keyboards/draytronics/daisy/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = usbasploader
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/draytronics/elise/rules.mk b/keyboards/draytronics/elise/rules.mk
index ef4e43a086b..6bbe5afe838 100644
--- a/keyboards/draytronics/elise/rules.mk
+++ b/keyboards/draytronics/elise/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/draytronics/scarlet/rules.mk b/keyboards/draytronics/scarlet/rules.mk
index 26008e03f41..6d6679ef3d2 100644
--- a/keyboards/draytronics/scarlet/rules.mk
+++ b/keyboards/draytronics/scarlet/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = usbasploader
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dtisaac/dosa40rgb/config.h b/keyboards/dtisaac/dosa40rgb/config.h
index c2d4a170565..c2c0ebd6d44 100644
--- a/keyboards/dtisaac/dosa40rgb/config.h
+++ b/keyboards/dtisaac/dosa40rgb/config.h
@@ -30,11 +30,6 @@ along with this program. If not, see .
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
-/* AdafruitBle Pin */
-#define AdafruitBleResetPin D4
-#define AdafruitBleCSPin B4
-#define AdafruitBleIRQPin E6
-
/*
* Keyboard Matrix Assignments
*
@@ -63,6 +58,51 @@ along with this program. If not, see .
#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 200 out of 255. If not defined maximum brightness is set to 255
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set
+
+#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_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+#define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#endif
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
@@ -70,4 +110,4 @@ along with this program. If not, see .
/* disable these deprecated features by default */
#define NO_ACTION_MACRO
-#define NO_ACTION_FUNCTION
\ No newline at end of file
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/dtisaac/dosa40rgb/rules.mk b/keyboards/dtisaac/dosa40rgb/rules.mk
index bf7cde9a555..a76047eb266 100644
--- a/keyboards/dtisaac/dosa40rgb/rules.mk
+++ b/keyboards/dtisaac/dosa40rgb/rules.mk
@@ -20,7 +20,8 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
-BLUETOOTH = AdafruitBLE # Enable Bluetooth
+BLUETOOTH_ENABLE = yes # Enable Bluetooth
+BLUETOOTH_DRIVER = AdafruitBLE
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/dtisaac/dtisaac01/rules.mk b/keyboards/dtisaac/dtisaac01/rules.mk
index dc64cef3234..5d08412d65e 100644
--- a/keyboards/dtisaac/dtisaac01/rules.mk
+++ b/keyboards/dtisaac/dtisaac01/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/duck/eagle_viper/v2/rules.mk b/keyboards/duck/eagle_viper/v2/rules.mk
index 7da0ea7f4c0..ecc221f9496 100644
--- a/keyboards/duck/eagle_viper/v2/rules.mk
+++ b/keyboards/duck/eagle_viper/v2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/duck/jetfire/rules.mk b/keyboards/duck/jetfire/rules.mk
index 9ec067e0c01..f8e4e1052e4 100644
--- a/keyboards/duck/jetfire/rules.mk
+++ b/keyboards/duck/jetfire/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/duck/octagon/v1/rules.mk b/keyboards/duck/octagon/v1/rules.mk
index 216a5b14cd0..aceb2aa2f3d 100644
--- a/keyboards/duck/octagon/v1/rules.mk
+++ b/keyboards/duck/octagon/v1/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/duck/octagon/v2/rules.mk b/keyboards/duck/octagon/v2/rules.mk
index 455abba8ad6..aa11021233f 100644
--- a/keyboards/duck/octagon/v2/rules.mk
+++ b/keyboards/duck/octagon/v2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/duck/orion/v3/rules.mk b/keyboards/duck/orion/v3/rules.mk
index 5206228b3e9..c582f6981c5 100644
--- a/keyboards/duck/orion/v3/rules.mk
+++ b/keyboards/duck/orion/v3/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/duck/tcv3/rules.mk b/keyboards/duck/tcv3/rules.mk
index ecc9f56585a..fa0be90927d 100644
--- a/keyboards/duck/tcv3/rules.mk
+++ b/keyboards/duck/tcv3/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ducky/one2mini/1861st/rules.mk b/keyboards/ducky/one2mini/1861st/rules.mk
index 0b2fedd8d82..65d4a1b3a84 100644
--- a/keyboards/ducky/one2mini/1861st/rules.mk
+++ b/keyboards/ducky/one2mini/1861st/rules.mk
@@ -16,7 +16,7 @@ ARMV = 6
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dumbo/keymaps/default/keymap.c b/keyboards/dumbo/keymaps/default/keymap.c
index f3ee8952103..7fc3ffc2c44 100644
--- a/keyboards/dumbo/keymaps/default/keymap.c
+++ b/keyboards/dumbo/keymaps/default/keymap.c
@@ -179,12 +179,13 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return rotation;
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
print_status_narrow();
} else {
render_logo();
}
+ return false;
}
#endif
diff --git a/keyboards/dumbo/keymaps/trip-trap/keymap.c b/keyboards/dumbo/keymaps/trip-trap/keymap.c
index fc1092ca6d8..73042f5f5ee 100644
--- a/keyboards/dumbo/keymaps/trip-trap/keymap.c
+++ b/keyboards/dumbo/keymaps/trip-trap/keymap.c
@@ -375,7 +375,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return rotation;
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
print_status_narrow();
sprintf(wpm_str, "%03d", get_current_wpm());
@@ -383,6 +383,7 @@ void oled_task_user(void) {
} else {
render_anim();
}
+ return false;
}
#endif
diff --git a/keyboards/dumbpad/v0x/rules.mk b/keyboards/dumbpad/v0x/rules.mk
index f5252179f6e..6302e98d3e7 100644
--- a/keyboards/dumbpad/v0x/rules.mk
+++ b/keyboards/dumbpad/v0x/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/dumbpad/v0x_dualencoder/rules.mk b/keyboards/dumbpad/v0x_dualencoder/rules.mk
index f5252179f6e..6302e98d3e7 100644
--- a/keyboards/dumbpad/v0x_dualencoder/rules.mk
+++ b/keyboards/dumbpad/v0x_dualencoder/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/dumbpad/v0x_right/rules.mk b/keyboards/dumbpad/v0x_right/rules.mk
index f5252179f6e..6302e98d3e7 100644
--- a/keyboards/dumbpad/v0x_right/rules.mk
+++ b/keyboards/dumbpad/v0x_right/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/dumbpad/v1x/rules.mk b/keyboards/dumbpad/v1x/rules.mk
index f5252179f6e..6302e98d3e7 100644
--- a/keyboards/dumbpad/v1x/rules.mk
+++ b/keyboards/dumbpad/v1x/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/dumbpad/v1x_dualencoder/rules.mk b/keyboards/dumbpad/v1x_dualencoder/rules.mk
index f5252179f6e..6302e98d3e7 100644
--- a/keyboards/dumbpad/v1x_dualencoder/rules.mk
+++ b/keyboards/dumbpad/v1x_dualencoder/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/dumbpad/v1x_right/rules.mk b/keyboards/dumbpad/v1x_right/rules.mk
index f5252179f6e..6302e98d3e7 100644
--- a/keyboards/dumbpad/v1x_right/rules.mk
+++ b/keyboards/dumbpad/v1x_right/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/durgod/dgk6x/config.h b/keyboards/durgod/dgk6x/config.h
index 53f824b98eb..92673e5c24a 100644
--- a/keyboards/durgod/dgk6x/config.h
+++ b/keyboards/durgod/dgk6x/config.h
@@ -83,9 +83,54 @@
# define RGB_MATRIX_LED_PROCESS_LIMIT 4
# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-# define DISABLE_RGB_MATRIX_HUE_BREATHING
-# define DISABLE_RGB_MATRIX_HUE_PENDULUM
-# define DISABLE_RGB_MATRIX_HUE_WAVE
+// 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
// This allows VIA to control RGB Matrix settings in the 'Lighting' section.
#define VIA_QMK_RGBLIGHT_ENABLE
diff --git a/keyboards/durgod/dgk6x/galaxy/galaxy.c b/keyboards/durgod/dgk6x/galaxy/galaxy.c
index 5f793ed85bf..86aef1bced9 100644
--- a/keyboards/durgod/dgk6x/galaxy/galaxy.c
+++ b/keyboards/durgod/dgk6x/galaxy/galaxy.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/durgod/dgk6x/hades/hades.c b/keyboards/durgod/dgk6x/hades/hades.c
index 3e235683f1c..2f2f9e650f5 100644
--- a/keyboards/durgod/dgk6x/hades/hades.c
+++ b/keyboards/durgod/dgk6x/hades/hades.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/durgod/dgk6x/rules.mk b/keyboards/durgod/dgk6x/rules.mk
index 56097ed6602..e6129f57165 100644
--- a/keyboards/durgod/dgk6x/rules.mk
+++ b/keyboards/durgod/dgk6x/rules.mk
@@ -10,7 +10,7 @@ NO_SUSPEND_POWER_DOWN = yes
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/durgod/dgk6x/venus/venus.c b/keyboards/durgod/dgk6x/venus/venus.c
index 3398acb19df..0b7fbd12f3d 100644
--- a/keyboards/durgod/dgk6x/venus/venus.c
+++ b/keyboards/durgod/dgk6x/venus/venus.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/durgod/k3x0/rules.mk b/keyboards/durgod/k3x0/rules.mk
index 827f223653b..327c1723b7a 100644
--- a/keyboards/durgod/k3x0/rules.mk
+++ b/keyboards/durgod/k3x0/rules.mk
@@ -12,7 +12,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dyz/dyz60/rules.mk b/keyboards/dyz/dyz60/rules.mk
index 02bed4240e7..209bdae2ee6 100644
--- a/keyboards/dyz/dyz60/rules.mk
+++ b/keyboards/dyz/dyz60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dz60/keymaps/LEdiodes/rules.mk b/keyboards/dz60/keymaps/LEdiodes/rules.mk
index 2dbd6bd5d46..2f6622e587e 100644
--- a/keyboards/dz60/keymaps/LEdiodes/rules.mk
+++ b/keyboards/dz60/keymaps/LEdiodes/rules.mk
@@ -1,7 +1,7 @@
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
diff --git a/keyboards/dz60/keymaps/konstantin_b/rules.mk b/keyboards/dz60/keymaps/konstantin_b/rules.mk
index c1eb43da2cd..18ea01311fc 100644
--- a/keyboards/dz60/keymaps/konstantin_b/rules.mk
+++ b/keyboards/dz60/keymaps/konstantin_b/rules.mk
@@ -1,7 +1,7 @@
USER_NAME := konstantin
# Generic features
-BOOTMAGIC_ENABLE = yes
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
COMMAND_ENABLE = yes
CONSOLE_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/dz60/keymaps/krusli/rules.mk b/keyboards/dz60/keymaps/krusli/rules.mk
index c6a19afa4d2..3207000a16b 100644
--- a/keyboards/dz60/keymaps/krusli/rules.mk
+++ b/keyboards/dz60/keymaps/krusli/rules.mk
@@ -1,7 +1,7 @@
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
diff --git a/keyboards/dz60/keymaps/marianas/rules.mk b/keyboards/dz60/keymaps/marianas/rules.mk
index d647c9de858..11eb15fe15f 100644
--- a/keyboards/dz60/keymaps/marianas/rules.mk
+++ b/keyboards/dz60/keymaps/marianas/rules.mk
@@ -3,7 +3,7 @@
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
diff --git a/keyboards/dz60/keymaps/mechmerlin/readme.md b/keyboards/dz60/keymaps/mechmerlin/readme.md
index 76ff54de548..9c53288feac 100644
--- a/keyboards/dz60/keymaps/mechmerlin/readme.md
+++ b/keyboards/dz60/keymaps/mechmerlin/readme.md
@@ -45,7 +45,7 @@ This is the control layer also known as layer 2. It utilizes the following:
---
### RESET
-As long `BOOTMAGIC_ENABLE` is set to `yes` in `rules.mk`, the DZ60 can be put into bootloader mode by holding the `space` key and the `b` key while plugging in. However sometmes this doesn't work or is troublesome to do, might as well use the `RESET` keycode to accomplish this.
+As long `BOOTMAGIC_ENABLE` is set to `yes` in `rules.mk`, the DZ60 can be put into bootloader mode by holding the `Escape` key while plugging in. However sometmes this doesn't work or is troublesome to do, might as well use the `RESET` keycode to accomplish this.
### RSFT_T(KC_SLSH)
diff --git a/keyboards/dz60/keymaps/niclake/rules.mk b/keyboards/dz60/keymaps/niclake/rules.mk
index 0b4dadb10ef..31d6053e03d 100644
--- a/keyboards/dz60/keymaps/niclake/rules.mk
+++ b/keyboards/dz60/keymaps/niclake/rules.mk
@@ -1,3 +1,3 @@
COMMAND_ENABLE = no
RGBLIGHT_ENABLE = yes
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
diff --git a/keyboards/dz60/keymaps/pinpox/rules.mk b/keyboards/dz60/keymaps/pinpox/rules.mk
index 855a1e5e6ec..7e4fd5d3491 100644
--- a/keyboards/dz60/keymaps/pinpox/rules.mk
+++ b/keyboards/dz60/keymaps/pinpox/rules.mk
@@ -1 +1 @@
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
diff --git a/keyboards/dz60/rules.mk b/keyboards/dz60/rules.mk
index 59be7b0751d..9d8586ede3f 100644
--- a/keyboards/dz60/rules.mk
+++ b/keyboards/dz60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dztech/bocc/rules.mk b/keyboards/dztech/bocc/rules.mk
index 81f481950a6..aeff331e7e1 100644
--- a/keyboards/dztech/bocc/rules.mk
+++ b/keyboards/dztech/bocc/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dztech/dz60rgb/dz60rgb.c b/keyboards/dztech/dz60rgb/dz60rgb.c
index a7fc3dbc5ce..81f4846c2c8 100644
--- a/keyboards/dztech/dz60rgb/dz60rgb.c
+++ b/keyboards/dztech/dz60rgb/dz60rgb.c
@@ -1,7 +1,7 @@
#include "dz60rgb.h"
#ifdef RGB_MATRIX_ENABLE
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
{ 0, K_14, J_14, L_14 },
{ 0, K_13, J_13, L_13 },
{ 0, K_12, J_12, L_12 },
diff --git a/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h b/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h
index 3c887217774..fc836b5ebb3 100644
--- a/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h
+++ b/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h
@@ -31,40 +31,40 @@
#undef DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
#undef RGB_MATRIX_STARTUP_MODE
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define DISABLE_RGB_MATRIX_SOLID_COLOR
-#define DISABLE_RGB_MATRIX_ALPHAS_MODS
-#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define DISABLE_RGB_MATRIX_BREATHING
-#define DISABLE_RGB_MATRIX_BAND_SAT
-#define DISABLE_RGB_MATRIX_BAND_VAL
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define DISABLE_RGB_MATRIX_CYCLE_ALL
-#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define DISABLE_RGB_MATRIX_DUAL_BEACON
-#define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define DISABLE_RGB_MATRIX_RAINDROPS
-#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-#define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define DISABLE_RGB_MATRIX_SPLASH
-#define DISABLE_RGB_MATRIX_MULTISPLASH
-#define DISABLE_RGB_MATRIX_SOLID_SPLASH
-#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#undef ENABLE_RGB_MATRIX_SOLID_COLOR
+#undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#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_CYCLE_OUT_IN
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#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_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/dztech/dz60rgb/keymaps/matthewrobo/config.h b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h
index 1002f010e1f..c2b14f52845 100644
--- a/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h
+++ b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h
@@ -13,43 +13,43 @@
#undef RGB_MATRIX_STARTUP_MODE
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// #define DISABLE_RGB_MATRIX_SOLID_COLOR
-// #define DISABLE_RGB_MATRIX_ALPHAS_MODS
-// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define DISABLE_RGB_MATRIX_BREATHING
-#define DISABLE_RGB_MATRIX_BAND_SAT
-// #define DISABLE_RGB_MATRIX_BAND_VAL
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define DISABLE_RGB_MATRIX_CYCLE_ALL
-#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
-// #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define DISABLE_RGB_MATRIX_DUAL_BEACON
-#define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define DISABLE_RGB_MATRIX_RAINDROPS
-#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-#define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define DISABLE_RGB_MATRIX_SPLASH
-// #define DISABLE_RGB_MATRIX_MULTISPLASH
-// #define DISABLE_RGB_MATRIX_SOLID_SPLASH
-// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+// #undef ENABLE_RGB_MATRIX_SOLID_COLOR
+// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+// #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_CYCLE_OUT_IN
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#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_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
#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/dztech/dz60rgb/keymaps/piv3rt/config.h b/keyboards/dztech/dz60rgb/keymaps/piv3rt/config.h
index a2b29c03be5..bdc2a1a057a 100644
--- a/keyboards/dztech/dz60rgb/keymaps/piv3rt/config.h
+++ b/keyboards/dztech/dz60rgb/keymaps/piv3rt/config.h
@@ -18,39 +18,39 @@ along with this program. If not, see .
#define FORCE_NKRO
#define TAPPING_TERM 100
-#define DISABLE_RGB_MATRIX_ALPHAS_MODS
-#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define DISABLE_RGB_MATRIX_BREATHING
-#define DISABLE_RGB_MATRIX_BAND_SAT
-#define DISABLE_RGB_MATRIX_BAND_VAL
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define DISABLE_RGB_MATRIX_CYCLE_ALL
-//#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define DISABLE_RGB_MATRIX_DUAL_BEACON
-#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define DISABLE_RGB_MATRIX_RAINDROPS
-#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-#define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define DISABLE_RGB_MATRIX_SPLASH
-#define DISABLE_RGB_MATRIX_MULTISPLASH
-#define DISABLE_RGB_MATRIX_SOLID_SPLASH
-#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#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_CYCLE_OUT_IN
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#undef ENABLE_RGB_MATRIX_DUAL_BEACON
+#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#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_TYPING_HEATMAP
+#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#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/dztech/dz60rgb/keymaps/via/config.h b/keyboards/dztech/dz60rgb/keymaps/via/config.h
index 1beb7130f75..8ef0df8ee87 100644
--- a/keyboards/dztech/dz60rgb/keymaps/via/config.h
+++ b/keyboards/dztech/dz60rgb/keymaps/via/config.h
@@ -16,6 +16,6 @@
#pragma once
-#define DISABLE_RGB_MATRIX_PIXEL_FLOW
-#define DISABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define DISABLE_RGB_MATRIX_PIXEL_RAIN
+#undef ENABLE_RGB_MATRIX_PIXEL_FLOW
+#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#undef ENABLE_RGB_MATRIX_PIXEL_RAIN
diff --git a/keyboards/dztech/dz60rgb/keymaps/xunz/config.h b/keyboards/dztech/dz60rgb/keymaps/xunz/config.h
index 60220cbbf74..cfeba003bd4 100644
--- a/keyboards/dztech/dz60rgb/keymaps/xunz/config.h
+++ b/keyboards/dztech/dz60rgb/keymaps/xunz/config.h
@@ -8,43 +8,43 @@
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// #define DISABLE_RGB_MATRIX_SOLID_COLOR
-// #define DISABLE_RGB_MATRIX_ALPHAS_MODS
-// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define DISABLE_RGB_MATRIX_BREATHING
-// #define DISABLE_RGB_MATRIX_BAND_SAT
-// #define DISABLE_RGB_MATRIX_BAND_VAL
-// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-// #define DISABLE_RGB_MATRIX_CYCLE_ALL
-// #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-// #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-// #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-// #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
-// #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
-// #define DISABLE_RGB_MATRIX_DUAL_BEACON
-// #define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define DISABLE_RGB_MATRIX_RAINDROPS
-// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define DISABLE_RGB_MATRIX_SPLASH
-// #define DISABLE_RGB_MATRIX_MULTISPLASH
-// #define DISABLE_RGB_MATRIX_SOLID_SPLASH
-// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+// #undef ENABLE_RGB_MATRIX_SOLID_COLOR
+// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+// #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_CYCLE_OUT_IN
+// #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+// #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+// #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_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
#define QMK_KEYS_PER_SCAN 4
@@ -53,4 +53,3 @@
#define NO_ACTION_ONESHOT
#define TAPPING_FORCE_HOLD
#define IGNORE_MOD_TAP_INTERRUPT
-
diff --git a/keyboards/dztech/dz60rgb/v1/config.h b/keyboards/dztech/dz60rgb/v1/config.h
index f6ee7c4e2ff..0d464b5d6b7 100644
--- a/keyboards/dztech/dz60rgb/v1/config.h
+++ b/keyboards/dztech/dz60rgb/v1/config.h
@@ -41,13 +41,57 @@
# define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_LED_PROCESS_LIMIT 4
# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+// 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
+
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 63
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 63
#endif
diff --git a/keyboards/dztech/dz60rgb/v1/rules.mk b/keyboards/dztech/dz60rgb/v1/rules.mk
index 8b6dda84db4..e055ded9226 100644
--- a/keyboards/dztech/dz60rgb/v1/rules.mk
+++ b/keyboards/dztech/dz60rgb/v1/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dztech/dz60rgb/v2/config.h b/keyboards/dztech/dz60rgb/v2/config.h
index 6108e990343..3db8ea40f51 100644
--- a/keyboards/dztech/dz60rgb/v2/config.h
+++ b/keyboards/dztech/dz60rgb/v2/config.h
@@ -40,24 +40,56 @@
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define DISABLE_RGB_MATRIX_BAND_SAT
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_SPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
+// 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
+
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 63
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 63
#endif
diff --git a/keyboards/dztech/dz60rgb/v2/rules.mk b/keyboards/dztech/dz60rgb/v2/rules.mk
index c4d5352324e..41fdb211ed4 100644
--- a/keyboards/dztech/dz60rgb/v2/rules.mk
+++ b/keyboards/dztech/dz60rgb/v2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dztech/dz60rgb/v2_1/config.h b/keyboards/dztech/dz60rgb/v2_1/config.h
index 06d504e3933..d785d1e539a 100644
--- a/keyboards/dztech/dz60rgb/v2_1/config.h
+++ b/keyboards/dztech/dz60rgb/v2_1/config.h
@@ -56,24 +56,56 @@
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define DISABLE_RGB_MATRIX_BAND_SAT
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_SPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
+// 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
+
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 63
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 63
#endif
diff --git a/keyboards/dztech/dz60rgb/v2_1/rules.mk b/keyboards/dztech/dz60rgb/v2_1/rules.mk
index 2e0e6f0bcb3..831b1b94f82 100644
--- a/keyboards/dztech/dz60rgb/v2_1/rules.mk
+++ b/keyboards/dztech/dz60rgb/v2_1/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER_SIZE = 6144
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c b/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c
index ab244109128..0929ddbf477 100644
--- a/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c
+++ b/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c
@@ -1,7 +1,7 @@
#include "dz60rgb_ansi.h"
#ifdef RGB_MATRIX_ENABLE
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
{ 0, K_14, J_14, L_14 },
{ 0, K_13, J_13, L_13 },
{ 0, K_12, J_12, L_12 },
diff --git a/keyboards/dztech/dz60rgb_ansi/v1/config.h b/keyboards/dztech/dz60rgb_ansi/v1/config.h
index dc2a6f4bc0f..176bb03a136 100644
--- a/keyboards/dztech/dz60rgb_ansi/v1/config.h
+++ b/keyboards/dztech/dz60rgb_ansi/v1/config.h
@@ -41,13 +41,57 @@
# define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_LED_PROCESS_LIMIT 4
# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+// 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
+
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 61
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 61
#endif
diff --git a/keyboards/dztech/dz60rgb_ansi/v1/rules.mk b/keyboards/dztech/dz60rgb_ansi/v1/rules.mk
index 8b6dda84db4..e055ded9226 100644
--- a/keyboards/dztech/dz60rgb_ansi/v1/rules.mk
+++ b/keyboards/dztech/dz60rgb_ansi/v1/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dztech/dz60rgb_ansi/v2/config.h b/keyboards/dztech/dz60rgb_ansi/v2/config.h
index 6c1e0068217..5ff2cd6a8c4 100644
--- a/keyboards/dztech/dz60rgb_ansi/v2/config.h
+++ b/keyboards/dztech/dz60rgb_ansi/v2/config.h
@@ -40,24 +40,56 @@
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define DISABLE_RGB_MATRIX_BAND_SAT
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_SPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
+// 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
+
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 61
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 61
#endif
diff --git a/keyboards/dztech/dz60rgb_ansi/v2/rules.mk b/keyboards/dztech/dz60rgb_ansi/v2/rules.mk
index c4d5352324e..83184688800 100644
--- a/keyboards/dztech/dz60rgb_ansi/v2/rules.mk
+++ b/keyboards/dztech/dz60rgb_ansi/v2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
@@ -22,3 +22,5 @@ AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes # Use RGB matrix
RGB_MATRIX_DRIVER = IS31FL3733
NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
+
+LTO_ENABLE = yes
diff --git a/keyboards/dztech/dz60rgb_ansi/v2_1/config.h b/keyboards/dztech/dz60rgb_ansi/v2_1/config.h
index ad310664a85..84aa7802c3e 100644
--- a/keyboards/dztech/dz60rgb_ansi/v2_1/config.h
+++ b/keyboards/dztech/dz60rgb_ansi/v2_1/config.h
@@ -54,23 +54,57 @@
#ifdef RGB_MATRIX_ENABLE
# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
+// # define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define DISABLE_RGB_MATRIX_BAND_SAT
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_SPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
+// 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
+
# define DRIVER_ADDR_1 0b1010000
# define DRIVER_COUNT 1
# define DRIVER_LED_TOTAL 61
diff --git a/keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk b/keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk
index aa2092d4df8..c52676f87f1 100644
--- a/keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk
+++ b/keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER_SIZE = 6144
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c b/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c
index 455624471df..83feb584562 100644
--- a/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c
+++ b/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c
@@ -1,7 +1,7 @@
#include "dz60rgb_wkl.h"
#ifdef RGB_MATRIX_ENABLE
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
{ 0, H_15, G_15, I_15 },
{ 0, K_14, J_14, L_14 },
{ 0, K_13, J_13, L_13 },
diff --git a/keyboards/dztech/dz60rgb_wkl/v1/config.h b/keyboards/dztech/dz60rgb_wkl/v1/config.h
index 12317c2d359..b8c70ff4fb4 100644
--- a/keyboards/dztech/dz60rgb_wkl/v1/config.h
+++ b/keyboards/dztech/dz60rgb_wkl/v1/config.h
@@ -41,13 +41,57 @@
# define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_LED_PROCESS_LIMIT 4
# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+// 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
+
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 62
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 62
#endif
diff --git a/keyboards/dztech/dz60rgb_wkl/v1/rules.mk b/keyboards/dztech/dz60rgb_wkl/v1/rules.mk
index 772964b55a0..d5f879081a7 100644
--- a/keyboards/dztech/dz60rgb_wkl/v1/rules.mk
+++ b/keyboards/dztech/dz60rgb_wkl/v1/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dztech/dz60rgb_wkl/v2/config.h b/keyboards/dztech/dz60rgb_wkl/v2/config.h
index 945b591ce6b..5985fccea71 100644
--- a/keyboards/dztech/dz60rgb_wkl/v2/config.h
+++ b/keyboards/dztech/dz60rgb_wkl/v2/config.h
@@ -40,24 +40,56 @@
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define DISABLE_RGB_MATRIX_BAND_SAT
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_SPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
+// 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
+
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 62
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 62
#endif
diff --git a/keyboards/dztech/dz60rgb_wkl/v2/rules.mk b/keyboards/dztech/dz60rgb_wkl/v2/rules.mk
index ac27bbf1404..89aea76078d 100644
--- a/keyboards/dztech/dz60rgb_wkl/v2/rules.mk
+++ b/keyboards/dztech/dz60rgb_wkl/v2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dztech/dz60rgb_wkl/v2_1/config.h b/keyboards/dztech/dz60rgb_wkl/v2_1/config.h
index 76b0b6ea529..bfa9d8d9555 100644
--- a/keyboards/dztech/dz60rgb_wkl/v2_1/config.h
+++ b/keyboards/dztech/dz60rgb_wkl/v2_1/config.h
@@ -56,24 +56,56 @@
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define DISABLE_RGB_MATRIX_BAND_SAT
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_SPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
+// 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
+
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 62
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 62
#endif
diff --git a/keyboards/dztech/dz60rgb_wkl/v2_1/rules.mk b/keyboards/dztech/dz60rgb_wkl/v2_1/rules.mk
index 90fb2d5f414..1f81ab573ac 100644
--- a/keyboards/dztech/dz60rgb_wkl/v2_1/rules.mk
+++ b/keyboards/dztech/dz60rgb_wkl/v2_1/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER_SIZE = 6144
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dztech/dz65rgb/keymaps/drootz/config.h b/keyboards/dztech/dz65rgb/keymaps/drootz/config.h
index 5810507975a..109aa3d07ef 100644
--- a/keyboards/dztech/dz65rgb/keymaps/drootz/config.h
+++ b/keyboards/dztech/dz65rgb/keymaps/drootz/config.h
@@ -6,13 +6,13 @@
#ifdef RGB_MATRIX_ENABLE
/* Reset default from dz65rgb/v2 config.h */
-# undef DISABLE_RGB_MATRIX_SPLASH
-# undef DISABLE_RGB_MATRIX_SOLID_SPLASH
+# undef DISABLE_RGB_MATRIX_SPLASH
+# undef DISABLE_RGB_MATRIX_SOLID_SPLASH
# undef RGB_MATRIX_LED_FLUSH_LIMIT
# undef RGB_MATRIX_STARTUP_MODE
# undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
-# define RGB_MATRIX_LED_FLUSH_LIMIT 16 // default: 26
+# define RGB_MATRIX_LED_FLUSH_LIMIT 16 // default: 26
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_TYPING_HEATMAP
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
# define RGB_MATRIX_STARTUP_HUE 10
@@ -20,33 +20,33 @@
# define RGB_MATRIX_STARTUP_VAL 200
# define RGB_MATRIX_STARTUP_SPD 75
/* Active RBG Modes */
-/* # define DISABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! */
-/* # define DISABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out */
-/* # define DISABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out */
+/* # undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! */
+/* # undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out */
+/* # undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out */
/* Disabling to optimize firmware size */
-# define DISABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
-# define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
-# define DISABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
-# define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
-# define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
-# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
-# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
-# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
-# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-# define DISABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
-# define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
-# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
-# define DISABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
-# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
+# undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
+# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
+# undef ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
+# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
+# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
+# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
+# undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
+# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
+# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
+# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
+# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
+# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
+# undef ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
+# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
+# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
+# undef ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
+# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
#endif /* RBG MATRIX */
/* Firmware size Optimizations */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
-#define NO_ACTION_ONESHOT
+#define NO_ACTION_ONESHOT
diff --git a/keyboards/dztech/dz65rgb/keymaps/jumper149/config.h b/keyboards/dztech/dz65rgb/keymaps/jumper149/config.h
index d9d295dfa88..504fc7f4f30 100644
--- a/keyboards/dztech/dz65rgb/keymaps/jumper149/config.h
+++ b/keyboards/dztech/dz65rgb/keymaps/jumper149/config.h
@@ -19,42 +19,42 @@
#ifdef RGB_MATRIX_ENABLE
-#define DISABLE_RGB_MATRIX_ALPHAS_MODS
-#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define DISABLE_RGB_MATRIX_BREATHING
-#define DISABLE_RGB_MATRIX_BAND_SAT
-#define DISABLE_RGB_MATRIX_BAND_VAL
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define DISABLE_RGB_MATRIX_CYCLE_ALL
-#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define DISABLE_RGB_MATRIX_DUAL_BEACON
-#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define DISABLE_RGB_MATRIX_RAINDROPS
-#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-#define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define DISABLE_RGB_MATRIX_SPLASH
-#define DISABLE_RGB_MATRIX_MULTISPLASH
-#define DISABLE_RGB_MATRIX_SOLID_SPLASH
-#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+# undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# 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_CYCLE_OUT_IN
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# undef ENABLE_RGB_MATRIX_DUAL_BEACON
+# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# 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_TYPING_HEATMAP
+# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# 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
// Fix RGB_MATRIX_STARTUP, because RGB_MATRIX_CYCLE_ALL is disabled.
// The actual handling of RGB_EFFECTs is done in keymap.c
diff --git a/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md b/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md
index d872587317d..9de86be2d12 100644
--- a/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md
+++ b/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md
@@ -3,13 +3,13 @@
Run commands in the root directory of this repository.
```
-./bin/qmk compile && sudo dfu-programmer atmega32u4 erase && sudo dfu-programmer atmega32u4 flash ./dztech_dz65rgb_v2_jumper149.hex && sudo dfu-programmer atmega32u4 reset
+qmk compile && sudo dfu-programmer atmega32u4 erase && sudo dfu-programmer atmega32u4 flash ./dztech_dz65rgb_v2_jumper149.hex && sudo dfu-programmer atmega32u4 reset
```
## build
```
-./bin/qmk compile
+qmk compile
```
## flash
diff --git a/keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h b/keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h
index a56af01656c..586e5765aa7 100644
--- a/keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h
+++ b/keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h
@@ -9,43 +9,43 @@
#undef RGB_MATRIX_STARTUP_MODE
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// #define DISABLE_RGB_MATRIX_SOLID_COLOR
-// #define DISABLE_RGB_MATRIX_ALPHAS_MODS
-// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define DISABLE_RGB_MATRIX_BREATHING
-#define DISABLE_RGB_MATRIX_BAND_SAT
-// #define DISABLE_RGB_MATRIX_BAND_VAL
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define DISABLE_RGB_MATRIX_CYCLE_ALL
-#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
-// #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define DISABLE_RGB_MATRIX_DUAL_BEACON
-#define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define DISABLE_RGB_MATRIX_RAINDROPS
-#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-#define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define DISABLE_RGB_MATRIX_SPLASH
-// #define DISABLE_RGB_MATRIX_MULTISPLASH
-// #define DISABLE_RGB_MATRIX_SOLID_SPLASH
-// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+// #undef ENABLE_RGB_MATRIX_SOLID_COLOR
+// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+// #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_CYCLE_OUT_IN
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#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_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
#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/dztech/dz65rgb/keymaps/via/config.h b/keyboards/dztech/dz65rgb/keymaps/via/config.h
index 1beb7130f75..8ef0df8ee87 100644
--- a/keyboards/dztech/dz65rgb/keymaps/via/config.h
+++ b/keyboards/dztech/dz65rgb/keymaps/via/config.h
@@ -16,6 +16,6 @@
#pragma once
-#define DISABLE_RGB_MATRIX_PIXEL_FLOW
-#define DISABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define DISABLE_RGB_MATRIX_PIXEL_RAIN
+#undef ENABLE_RGB_MATRIX_PIXEL_FLOW
+#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#undef ENABLE_RGB_MATRIX_PIXEL_RAIN
diff --git a/keyboards/dztech/dz65rgb/v1/config.h b/keyboards/dztech/dz65rgb/v1/config.h
index 1ecd9002cba..5fe0ba3eba4 100644
--- a/keyboards/dztech/dz65rgb/v1/config.h
+++ b/keyboards/dztech/dz65rgb/v1/config.h
@@ -53,22 +53,54 @@
# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_KEYPRESSES
-# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define DISABLE_RGB_MATRIX_BAND_SAT
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_SPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
+// 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
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
# define DRIVER_ADDR_1 0b1110100
diff --git a/keyboards/dztech/dz65rgb/v1/rules.mk b/keyboards/dztech/dz65rgb/v1/rules.mk
index 9f2c7b41cb9..32233c3e943 100644
--- a/keyboards/dztech/dz65rgb/v1/rules.mk
+++ b/keyboards/dztech/dz65rgb/v1/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dztech/dz65rgb/v1/v1.c b/keyboards/dztech/dz65rgb/v1/v1.c
index aabe41c3132..8caced800b4 100644
--- a/keyboards/dztech/dz65rgb/v1/v1.c
+++ b/keyboards/dztech/dz65rgb/v1/v1.c
@@ -16,7 +16,7 @@
#include "v1.h"
#ifdef RGB_MATRIX_ENABLE
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
{ 0, C8_8, C7_8, C6_8 },
{ 0, C9_8, C7_7, C6_7 },
{ 0, C9_7, C8_7, C6_6 },
diff --git a/keyboards/dztech/dz65rgb/v2/config.h b/keyboards/dztech/dz65rgb/v2/config.h
index 1e1e21f5e98..b8677e44364 100644
--- a/keyboards/dztech/dz65rgb/v2/config.h
+++ b/keyboards/dztech/dz65rgb/v2/config.h
@@ -53,22 +53,54 @@
# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_KEYPRESSES
-# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define DISABLE_RGB_MATRIX_BAND_SAT
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_SPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
+// 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
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
# define DRIVER_ADDR_1 0b1110100
diff --git a/keyboards/dztech/dz65rgb/v2/rules.mk b/keyboards/dztech/dz65rgb/v2/rules.mk
index c8c752f5b2b..5b7a9ae3a24 100644
--- a/keyboards/dztech/dz65rgb/v2/rules.mk
+++ b/keyboards/dztech/dz65rgb/v2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dztech/dz65rgb/v2/v2.c b/keyboards/dztech/dz65rgb/v2/v2.c
index dce167c73f5..db8e968cc4d 100644
--- a/keyboards/dztech/dz65rgb/v2/v2.c
+++ b/keyboards/dztech/dz65rgb/v2/v2.c
@@ -16,7 +16,7 @@
#include "v2.h"
#ifdef RGB_MATRIX_ENABLE
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
{ 0, C8_8, C7_8, C6_8 },
{ 0, C9_8, C7_7, C6_7 },
{ 0, C9_7, C8_7, C6_6 },
diff --git a/keyboards/dztech/dz65rgb/v3/config.h b/keyboards/dztech/dz65rgb/v3/config.h
index dbf2f5b3ce8..ba7863f42a8 100755
--- a/keyboards/dztech/dz65rgb/v3/config.h
+++ b/keyboards/dztech/dz65rgb/v3/config.h
@@ -47,11 +47,58 @@
# define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_LED_PROCESS_LIMIT 4
# define RGB_MATRIX_LED_FLUSH_LIMIT 26
+// 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
+
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
# define DRIVER_ADDR_1 0b0110000
-# define DRIVER_ADDR_2 0b0110000 // this is here for compliancy reasons.
# define DRIVER_COUNT 1
-# define DRIVER_1_LED_TOTAL 68
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_LED_TOTAL 68
# define DRIVER_INDICATOR_LED_TOTAL 0
#endif
diff --git a/keyboards/dztech/dz65rgb/v3/rules.mk b/keyboards/dztech/dz65rgb/v3/rules.mk
index 4a5a4f32dc6..5623823ae41 100755
--- a/keyboards/dztech/dz65rgb/v3/rules.mk
+++ b/keyboards/dztech/dz65rgb/v3/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER_SIZE = 6144
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/dztech/dz65rgb/v3/v3.c b/keyboards/dztech/dz65rgb/v3/v3.c
index c3719bfa518..18f87dc00b6 100755
--- a/keyboards/dztech/dz65rgb/v3/v3.c
+++ b/keyboards/dztech/dz65rgb/v3/v3.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
{0, CS21_SW1, CS20_SW1, CS19_SW1},
{0, CS21_SW2, CS20_SW2, CS19_SW2},
{0, CS21_SW3, CS20_SW3, CS19_SW3},
diff --git a/keyboards/dztech/dz96/rules.mk b/keyboards/dztech/dz96/rules.mk
index 0641b5d22e4..4f1faaec800 100644
--- a/keyboards/dztech/dz96/rules.mk
+++ b/keyboards/dztech/dz96/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/e88/rules.mk b/keyboards/e88/rules.mk
index c0d8b52500c..2c660c9867c 100644
--- a/keyboards/e88/rules.mk
+++ b/keyboards/e88/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/earth_rover/rules.mk b/keyboards/earth_rover/rules.mk
index 1f14fe51968..c1149216c28 100644
--- a/keyboards/earth_rover/rules.mk
+++ b/keyboards/earth_rover/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ebastler/isometria_75/rev1/rules.mk b/keyboards/ebastler/isometria_75/rev1/rules.mk
index 4a3ba03d98b..85d85a70abc 100644
--- a/keyboards/ebastler/isometria_75/rev1/rules.mk
+++ b/keyboards/ebastler/isometria_75/rev1/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/eco/config.h b/keyboards/eco/config.h
index db1c61ab4f9..e5258e3a0bb 100644
--- a/keyboards/eco/config.h
+++ b/keyboards/eco/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -68,5 +67,3 @@ along with this program. If not, see .
#ifdef SUBPROJECT_rev2
#include "rev2/config.h"
#endif
-
-#endif
diff --git a/keyboards/eco/eco.h b/keyboards/eco/eco.h
index 211e41fe8ff..885bf982d7f 100644
--- a/keyboards/eco/eco.h
+++ b/keyboards/eco/eco.h
@@ -1,13 +1,9 @@
-#ifndef ECO_H
-#define ECO_H
+#pragma once
-#ifdef KEYBOARD_eco_rev1
- #include "rev1.h"
-#endif
-#ifdef KEYBOARD_eco_rev2
- #include "rev2.h"
+#if defined(KEYBOARD_eco_rev1)
+# include "rev1.h"
+#elif defined(KEYBOARD_eco_rev2)
+# include "rev2.h"
#endif
#include "quantum.h"
-
-#endif
diff --git a/keyboards/eco/rev1/config.h b/keyboards/eco/rev1/config.h
index 1e97a703d16..65cb050d6ca 100644
--- a/keyboards/eco/rev1/config.h
+++ b/keyboards/eco/rev1/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef REV1_CONFIG_H
-#define REV1_CONFIG_H
+#pragma once
#include "../config.h"
@@ -26,5 +25,3 @@ along with this program. If not, see .
#define MATRIX_ROW_PINS { B1, B6, B2, B3 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B5, B4, E6, D7, C6, D4, D0, D1, D2, D3 }
#define UNUSED_PINS
-
-#endif
diff --git a/keyboards/eco/rev1/rev1.h b/keyboards/eco/rev1/rev1.h
index 132760fbe85..a6ceafb815f 100644
--- a/keyboards/eco/rev1/rev1.h
+++ b/keyboards/eco/rev1/rev1.h
@@ -1,21 +1,17 @@
-#ifndef REV1_H
-#define REV1_H
+#pragma once
#include "../eco.h"
#include "quantum.h"
#define LAYOUT( \
- k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, k014, \
- k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, k114, \
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, k214, \
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, k314 \
- ) \
- { \
- { k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, k014 }, \
- { k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, k114 }, \
- { k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, k214 }, \
- { k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, k314 } \
- }
-
-#endif
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D } \
+}
diff --git a/keyboards/eco/rev2/config.h b/keyboards/eco/rev2/config.h
index 83f2defc9e4..bbc0492e065 100644
--- a/keyboards/eco/rev2/config.h
+++ b/keyboards/eco/rev2/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef REV2_CONFIG_H
-#define REV2_CONFIG_H
+#pragma once
#include "../config.h"
@@ -26,5 +25,3 @@ along with this program. If not, see .
#define MATRIX_ROW_PINS { D7, B5, B4, E6 }
#define MATRIX_COL_PINS { D1, D0, D4, C6, B6, B2, B3, B1, F7, F6, F5, F4, D2, D3 }
#define UNUSED_PINS
-
-#endif
diff --git a/keyboards/eco/rev2/rev2.h b/keyboards/eco/rev2/rev2.h
index 881bcc77b90..a6ceafb815f 100644
--- a/keyboards/eco/rev2/rev2.h
+++ b/keyboards/eco/rev2/rev2.h
@@ -1,21 +1,17 @@
-#ifndef REV2_H
-#define REV2_H
+#pragma once
#include "../eco.h"
#include "quantum.h"
#define LAYOUT( \
- k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, k014, \
- k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, k114, \
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, k214, \
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, k314 \
- ) \
- { \
- { k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, k014 }, \
- { k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, k114 }, \
- { k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, k214 }, \
- { k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, k314 } \
- }
-
-#endif
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D } \
+}
diff --git a/keyboards/edc40/rules.mk b/keyboards/edc40/rules.mk
index 5968ac7e0ac..4bda63662a2 100644
--- a/keyboards/edc40/rules.mk
+++ b/keyboards/edc40/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/edda/rules.mk b/keyboards/edda/rules.mk
index 647687f0d3a..d5cb34b852b 100644
--- a/keyboards/edda/rules.mk
+++ b/keyboards/edda/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/edi/hardlight/mk1/rules.mk b/keyboards/edi/hardlight/mk1/rules.mk
index 42dc95e6d01..c3af341ad92 100644
--- a/keyboards/edi/hardlight/mk1/rules.mk
+++ b/keyboards/edi/hardlight/mk1/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/eek/rules.mk b/keyboards/eek/rules.mk
index f1bac8abeb1..c2b406abebf 100644
--- a/keyboards/eek/rules.mk
+++ b/keyboards/eek/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/efreet/rules.mk b/keyboards/efreet/rules.mk
index 8cd5547bc97..cf6c4856612 100644
--- a/keyboards/efreet/rules.mk
+++ b/keyboards/efreet/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/eggman/rules.mk b/keyboards/eggman/rules.mk
index c781d058e71..b309c4db777 100644
--- a/keyboards/eggman/rules.mk
+++ b/keyboards/eggman/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ein_60/ein_60.c b/keyboards/ein_60/ein_60.c
index e9431edefb7..d15ad0cd526 100644
--- a/keyboards/ein_60/ein_60.c
+++ b/keyboards/ein_60/ein_60.c
@@ -56,7 +56,8 @@ const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT(
#endif
#ifdef OLED_ENABLE
-__attribute__((weak)) void oled_task_user(void) {
+bool oled_task_kb(void) {
+ if (!oled_task_user()) { return false; }
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
@@ -95,7 +96,9 @@ __attribute__((weak)) void oled_task_user(void) {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 4,253,197,197,197,197,197,197,197,197,197,197,199,192,192, 0,255,255, 0,255, 0,255,255, 0,254, 13, 27, 55,111,222,188,120,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0,255,197,197,197,197,197,197,197,197,197,197,253,253,255,131,254, 0, 0,255,255, 0,255,184,220,238,247,219,205,198,195,193,192,255,255,255,128,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 3, 3, 2, 3, 0, 3, 3, 2, 3, 0, 0, 0, 0, 0, 1, 3, 2, 2, 3, 0, 8, 28, 20, 20, 20, 20, 20, 28, 8, 0, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
+
oled_write_raw_P(ein60_logo, sizeof(ein60_logo));
+ return false;
}
#endif
diff --git a/keyboards/ein_60/keymaps/default/keymap.c b/keyboards/ein_60/keymaps/default/keymap.c
index 3984dabcbf4..24a705106c2 100644
--- a/keyboards/ein_60/keymaps/default/keymap.c
+++ b/keyboards/ein_60/keymaps/default/keymap.c
@@ -167,11 +167,12 @@ static void render_status(void) {
oled_set_cursor(1,2);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
render_status();
oled_write_ln_P(PSTR(""), false);
render_ein60_logo();
+ return false;
}
#endif
diff --git a/keyboards/ein_60/keymaps/klackygears/keymap.c b/keyboards/ein_60/keymaps/klackygears/keymap.c
index ea1d77dea73..be3c30b97d7 100644
--- a/keyboards/ein_60/keymaps/klackygears/keymap.c
+++ b/keyboards/ein_60/keymaps/klackygears/keymap.c
@@ -104,7 +104,7 @@ static void render_ein60_logo(void) {
static void render_status(void) {
-//void oled_task_user(void) {
+//bool oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
@@ -145,12 +145,13 @@ static void render_status(void) {
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
render_status();
oled_write_ln_P(PSTR(""), false);
render_ein60_logo();
+ return false;
}
#endif
@@ -172,5 +173,3 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
return true;
}
-
-
diff --git a/keyboards/ein_60/keymaps/ledtest/keymap.c b/keyboards/ein_60/keymaps/ledtest/keymap.c
index 6f903124afd..5fb5217c98b 100644
--- a/keyboards/ein_60/keymaps/ledtest/keymap.c
+++ b/keyboards/ein_60/keymaps/ledtest/keymap.c
@@ -166,11 +166,13 @@ static void render_status(void) {
oled_set_cursor(1,2);
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
render_status();
oled_write_ln_P(PSTR(""), false);
render_ein60_logo();
+
+ return false;
}
#endif
diff --git a/keyboards/emajesty/eiri/rules.mk b/keyboards/emajesty/eiri/rules.mk
index 1f14fe51968..c1149216c28 100644
--- a/keyboards/emajesty/eiri/rules.mk
+++ b/keyboards/emajesty/eiri/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/emi20/rules.mk b/keyboards/emi20/rules.mk
index 6a471b03e28..2eb93696592 100644
--- a/keyboards/emi20/rules.mk
+++ b/keyboards/emi20/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/eniigmakeyboards/ek60/rules.mk b/keyboards/eniigmakeyboards/ek60/rules.mk
index ada495bf9d7..c14a1c5088b 100644
--- a/keyboards/eniigmakeyboards/ek60/rules.mk
+++ b/keyboards/eniigmakeyboards/ek60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/eniigmakeyboards/ek65/rules.mk b/keyboards/eniigmakeyboards/ek65/rules.mk
index c79f74e34b9..9906266f482 100644
--- a/keyboards/eniigmakeyboards/ek65/rules.mk
+++ b/keyboards/eniigmakeyboards/ek65/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/eniigmakeyboards/ek87/rules.mk b/keyboards/eniigmakeyboards/ek87/rules.mk
index d2df5bff40d..ab4a4e3e615 100644
--- a/keyboards/eniigmakeyboards/ek87/rules.mk
+++ b/keyboards/eniigmakeyboards/ek87/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ep/40/40.h b/keyboards/ep/40/40.h
index 30f3d15b4fb..1ac39a278d7 100644
--- a/keyboards/ep/40/40.h
+++ b/keyboards/ep/40/40.h
@@ -13,11 +13,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef EP40_H
-#define EP40_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* This a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
@@ -26,19 +28,14 @@
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
-#define xxx KC_NO
-
-#define LAYOUT(\
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b,\
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1b,\
- k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b,\
- k30, k31, k32, k34, k36, k38, k39, k3a, k3b \
-) \
-{ \
- {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b},\
- {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, xxx, k1b},\
- {k20, xxx, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b},\
- {k30, k31, k32, xxx, k34, xxx, k36, xxx, k38, k39, k3a, k3b} \
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1B, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k34, k36, k38, k39, k3A, k3B \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, XXX, k1B }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, XXX, k34, XXX, k36, XXX, k38, k39, k3A, k3B } \
}
-
-#endif
diff --git a/keyboards/ep/96/96.h b/keyboards/ep/96/96.h
index 1887eb472c0..1117256cdc2 100644
--- a/keyboards/ep/96/96.h
+++ b/keyboards/ep/96/96.h
@@ -13,11 +13,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef EP96_H
-#define EP96_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* This a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
@@ -26,22 +28,19 @@
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
-#define xxxx KC_NO
#define LAYOUT( \
- K000, K001, K002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, k017, k018, \
- K100, K101, K102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k114, k115, k116, k117, k118, \
- K200, K202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k215, k216, k217, \
- K300, K302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k315, k316, k317, k318, \
- K400, K401, K402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k413, k414, k415, k416, k417, \
- K500, K501, K502, k506, k511, k512, k513, k514, k515, k516, k517, k518) \
-{ \
- {K000, K001, K002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, k017, k018}, \
- {K100, K101, K102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, xxxx, k114, k115, k116, k117, k118}, \
- {K200, xxxx, K202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, xxxx, k215, k216, k217, xxxx}, \
- {K300, xxxx, K302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k315, k316, k317, k318}, \
- {K400, K401, K402, k403, k404, k405, k406, k407, k408, k409, k410, k411, xxxx, k413, k414, k415, k416, k417, xxxx}, \
- {K500, K501, K502, xxxx, xxxx, xxxx, k506, xxxx, xxxx, xxxx, xxxx, k511, k512, k513, k514, k515, k516, k517, k518} \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, k1F, k1G, k1H, k1I, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, k2G, k2H, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3I, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4D, k4E, k4F, k4G, k4H, \
+ k50, k51, k52, k56, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, k1E, k1F, k1G, k1H, k1I }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, k2F, k2G, k2H, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3I }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, XXX, k4D, k4E, k4F, k4G, k4H, XXX }, \
+ { k50, k51, k52, XXX, XXX, XXX, k56, XXX, XXX, XXX, XXX, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I } \
}
-
-#endif
diff --git a/keyboards/ep/comsn/hs68/rules.mk b/keyboards/ep/comsn/hs68/rules.mk
index 077733ea876..bcf7f652ec3 100644
--- a/keyboards/ep/comsn/hs68/rules.mk
+++ b/keyboards/ep/comsn/hs68/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/ep/comsn/mollydooker/rules.mk b/keyboards/ep/comsn/mollydooker/rules.mk
index 58a1405de2e..c9228dd8dfa 100644
--- a/keyboards/ep/comsn/mollydooker/rules.mk
+++ b/keyboards/ep/comsn/mollydooker/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/ep/comsn/tf_longeboye/rules.mk b/keyboards/ep/comsn/tf_longeboye/rules.mk
index df18dc487eb..5c194d1aeb6 100644
--- a/keyboards/ep/comsn/tf_longeboye/rules.mk
+++ b/keyboards/ep/comsn/tf_longeboye/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/epoch80/rules.mk b/keyboards/epoch80/rules.mk
index f985f2cb0ef..94c5d640aea 100644
--- a/keyboards/epoch80/rules.mk
+++ b/keyboards/epoch80/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ergoarrows/rules.mk b/keyboards/ergoarrows/rules.mk
index b32cbc2f64c..9bdc73b7615 100644
--- a/keyboards/ergoarrows/rules.mk
+++ b/keyboards/ergoarrows/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ergodash/config.h b/keyboards/ergodash/config.h
index c910d8f24f0..cfb6bf4ffcc 100644
--- a/keyboards/ergodash/config.h
+++ b/keyboards/ergodash/config.h
@@ -16,9 +16,6 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
-
-#endif
diff --git a/keyboards/ergodash/mini/keymaps/yoshimaru46/config.h b/keyboards/ergodash/mini/keymaps/yoshimaru46/config.h
new file mode 100644
index 00000000000..df04873a97e
--- /dev/null
+++ b/keyboards/ergodash/mini/keymaps/yoshimaru46/config.h
@@ -0,0 +1,33 @@
+/*
+This is the c configuration file for the keymap
+
+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
+
+
+/* Use I2C or Serial, not both */
+
+#define USE_SERIAL
+// #define USE_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
diff --git a/keyboards/ergodash/mini/keymaps/yoshimaru46/keymap.c b/keyboards/ergodash/mini/keymaps/yoshimaru46/keymap.c
new file mode 100644
index 00000000000..98c56c8d16b
--- /dev/null
+++ b/keyboards/ergodash/mini/keymaps/yoshimaru46/keymap.c
@@ -0,0 +1,111 @@
+/* Copyright 2021 Yoshihiro Saito
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ ADJUST,
+};
+
+// Shift + ( = <
+const key_override_t left_paren_angle_bracket_override = ko_make_basic(MOD_MASK_SHIFT, KC_LEFT_PAREN, KC_LEFT_ANGLE_BRACKET);
+
+// Shift + ) = >
+const key_override_t right_paren_angle_bracket_override = ko_make_basic(MOD_MASK_SHIFT, KC_RIGHT_PAREN, KC_RIGHT_ANGLE_BRACKET);
+
+const key_override_t **key_overrides = (const key_override_t *[]){
+ &left_paren_angle_bracket_override,
+ &right_paren_angle_bracket_override,
+ NULL
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Qwerty */
+ [_QWERTY] = LAYOUT(
+ KC_GESC, 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_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_DEL,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LGUI, LOWER, CTL_T(KC_SPC), KC_SFTENT, RAISE, KC_RGUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+
+ /* Lower */
+ [_LOWER] = LAYOUT(
+ XXXXXXX, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_F11, KC_GRV, KC_CIRC, KC_AMPR, KC_ASTR, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F12, KC_TILD, KC_BSLS, KC_MINS, KC_EQL, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_PIPE, KC_UNDS, KC_PLUS, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+
+ /* Raise */
+ [_RAISE] = LAYOUT(
+ XXXXXXX, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, XXXXXXX, XXXXXXX, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+
+ /* Adjust */
+ [_ADJUST] = LAYOUT(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ ,_______, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case ADJUST:
+ if (record->event.pressed) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/ergodash/mini/keymaps/yoshimaru46/readme.md b/keyboards/ergodash/mini/keymaps/yoshimaru46/readme.md
new file mode 100644
index 00000000000..67a6ed9b90f
--- /dev/null
+++ b/keyboards/ergodash/mini/keymaps/yoshimaru46/readme.md
@@ -0,0 +1,4 @@
+# yoshimaru46's keymap for Ergodash mini
+
+This is the yoshimaru46's keymap configuration for Ergodash mini.
+There are three layers, QWERTY(default), LOWER, and RAISE.
diff --git a/keyboards/ergodash/mini/keymaps/yoshimaru46/rules.mk b/keyboards/ergodash/mini/keymaps/yoshimaru46/rules.mk
new file mode 100644
index 00000000000..f85c6a4151a
--- /dev/null
+++ b/keyboards/ergodash/mini/keymaps/yoshimaru46/rules.mk
@@ -0,0 +1,4 @@
+BACKLIGHT_ENABLE = no
+RGBLIGHT_ENABLE = no
+AUDIO_ENABLE = no
+KEY_OVERRIDE_ENABLE = yes
diff --git a/keyboards/ergodash/mini/mini.h b/keyboards/ergodash/mini/mini.h
index d565c6168ff..4aca15775b0 100644
--- a/keyboards/ergodash/mini/mini.h
+++ b/keyboards/ergodash/mini/mini.h
@@ -1,5 +1,4 @@
-#ifndef MINI_H
-#define MINI_H
+#pragma once
#include "ergodash.h"
@@ -16,41 +15,37 @@
#ifndef FLIP_HALF
// Standard Keymap
// (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
-#define LAYOUT( \
- L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
- L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
- L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
- L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36 \
- ) \
- { \
- { 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 }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R36, R35, R34, R33, R32, R31, R30 }, \
- }
+# define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36 \
+) { \
+ { 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 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, R30 } \
+}
#else
// Keymap with right side flipped
// (TRRS jack on both halves are to the right)
-#define LAYOUT( \
- L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
- L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
- L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
- L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36 \
- ) \
- { \
- { 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 }, \
- { 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 }, \
- }
-#endif
-
+# define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36 \
+) { \
+ { 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 }, \
+ { 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 } \
+}
#endif
diff --git a/keyboards/ergodash/rev1/rev1.h b/keyboards/ergodash/rev1/rev1.h
index eaabf7cc5f8..7f094534cc3 100644
--- a/keyboards/ergodash/rev1/rev1.h
+++ b/keyboards/ergodash/rev1/rev1.h
@@ -1,5 +1,4 @@
-#ifndef REV1_H
-#define REV1_H
+#pragma once
#include "ergodash.h"
@@ -13,135 +12,128 @@
#endif
#endif
+#define XXX KC_NO
+
#ifndef FLIP_HALF
// Standard Keymap
// (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
-#define LAYOUT_4key( \
+# define LAYOUT_4key( \
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 \
- ) \
- { \
- { 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 }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R36, R35, R34, R33, R32, R31, R30 }, \
- { R46, R45, R44, R43, R42, R41, R40 } \
- }
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+) { \
+ { 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 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, R30 }, \
+ { R46, R45, R44, R43, R42, R41, R40 } \
+}
// Just defined for configurator support, the matrix is identical to LAYOUT_4key
-#define LAYOUT_4key_2u_inner( \
+# define LAYOUT_4key_2u_inner( \
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 \
- ) \
- { \
- { 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 }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R36, R35, R34, R33, R32, R31, R30 }, \
- { R46, R45, R44, R43, R42, R41, R40 } \
- }
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+) { \
+ { 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 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, R30 }, \
+ { R46, R45, R44, R43, R42, R41, R40 } \
+}
-#define LAYOUT_3key_2us( \
+# define LAYOUT_3key_2us( \
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, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
- ) \
- { \
- { 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, KC_NO }, \
- { L40, L41, L42, L43, L44, L45, L46 }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R36, R35, R34, R33, R32, R31, KC_NO }, \
- { R46, R45, R44, R43, R42, R41, R40 } \
- }
-
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+) { \
+ { 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 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, XXX }, \
+ { R46, R45, R44, R43, R42, R41, R40 } \
+}
-#define LAYOUT_3key_1us( \
+# define LAYOUT_3key_1us( \
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, R41, R42, R43, R44, R45, R46 \
- ) \
- { \
- { 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, KC_NO }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R36, R35, R34, R33, R32, R31, R30 }, \
- { R46, R45, R44, R43, R42, R41, KC_NO } \
- }
+ L40, L41, L42, L43, L44, L45, R41, R42, R43, R44, R45, R46 \
+) { \
+ { 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, XXX }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, R30 }, \
+ { R46, R45, R44, R43, R42, R41, XXX } \
+}
-#define LAYOUT_2key( \
+# define LAYOUT_2key( \
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, L45, R41, R42, R43, R44, R45, R46 \
- ) \
- { \
- { 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, KC_NO }, \
- { L40, L41, L42, L43, L44, L45, KC_NO }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R36, R35, R34, R33, R32, R31, KC_NO }, \
- { R46, R45, R44, R43, R42, R41, KC_NO } \
- }
+ L40, L41, L42, L43, L44, L45, R41, R42, R43, R44, R45, R46 \
+) { \
+ { 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, XXX }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, XXX }, \
+ { R46, R45, R44, R43, R42, R41, XXX } \
+}
#define LAYOUT LAYOUT_4key
#else
// Keymap with right side flipped
// (TRRS jack on both halves are to the right)
-#define LAYOUT( \
+# define LAYOUT( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
- L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
- ) \
- { \
- { 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, R44, R45, R46 } \
- }
-#endif
-
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+) { \
+ { 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, R44, R45, R46 } \
+}
#endif
diff --git a/keyboards/ergodox_ez/config.h b/keyboards/ergodox_ez/config.h
index 9dcfc341e1d..c3b794f1087 100644
--- a/keyboards/ergodox_ez/config.h
+++ b/keyboards/ergodox_ez/config.h
@@ -130,6 +130,54 @@ along with this program. If not, see .
#define RGB_MATRIX_LED_FLUSH_LIMIT 26
#define RGB_DISABLE_WHEN_USB_SUSPENDED
+// 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
// #define RGBLIGHT_COLOR_LAYER_0 0x00, 0x00, 0xFF
/* #define RGBLIGHT_COLOR_LAYER_1 0x00, 0x00, 0xFF */
diff --git a/keyboards/ergodox_ez/ergodox_ez.c b/keyboards/ergodox_ez/ergodox_ez.c
index 7af76cb6244..49f690fa70a 100644
--- a/keyboards/ergodox_ez/ergodox_ez.c
+++ b/keyboards/ergodox_ez/ergodox_ez.c
@@ -243,7 +243,7 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
#ifdef RGB_MATRIX_ENABLE
// clang-format off
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* driver
* | R location
* | | G location
diff --git a/keyboards/ergodox_infinity/board_is31fl3731c.h b/keyboards/ergodox_infinity/board_is31fl3731c.h
deleted file mode 100644
index b2ed2b00310..00000000000
--- a/keyboards/ergodox_infinity/board_is31fl3731c.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-Copyright 2016 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 .
-*/
-
-#ifndef _GDISP_LLD_BOARD_H
-#define _GDISP_LLD_BOARD_H
-
-static const I2CConfig i2ccfg = {
- 400000 // clock speed (Hz); 400kHz max for IS31
-};
-
-static const uint8_t led_mask[] = {
- 0xFF, 0x00, /* C1-1 -> C1-16 */
- 0xFF, 0x00, /* C2-1 -> C2-16 */
- 0xFF, 0x00, /* C3-1 -> C3-16 */
- 0xFF, 0x00, /* C4-1 -> C4-16 */
- 0x3F, 0x00, /* C5-1 -> C5-16 */
- 0x00, 0x00, /* C6-1 -> C6-16 */
- 0x00, 0x00, /* C7-1 -> C7-16 */
- 0x00, 0x00, /* C8-1 -> C8-16 */
- 0x00, 0x00, /* C9-1 -> C9-16 */
-};
-
-// The address of the LED
-#define LA(c, r) (c + r * 16 )
-// Need to be an address that is not mapped, but inside the range of the controller matrix
-#define NA LA(8, 8)
-
-// The numbers in the comments are the led numbers DXX on the PCB
-// The mapping is taken from the schematic of left hand side
-static const uint8_t led_mapping[GDISP_SCREEN_HEIGHT][GDISP_SCREEN_WIDTH] = {
-// 45 44 43 42 41 40 39
- { LA(1, 1), LA(1, 0), LA(0, 4), LA(0, 3), LA(0, 2), LA(0, 1), LA(0, 0)},
-// 52 51 50 49 48 47 46
- { LA(2, 3), LA(2, 2), LA(2, 1), LA(2, 0), LA(1, 4), LA(1, 3), LA(1, 2) },
-// 58 57 56 55 54 53 N/A
- { LA(3, 4), LA(3, 3), LA(3, 2), LA(3, 1), LA(3, 0), LA(2, 4), NA },
-// 67 66 65 64 63 62 61
- { LA(5, 3), LA(5, 2), LA(5, 1), LA(5, 0), LA(4, 4), LA(4, 3), LA(4, 2) },
-// 76 75 74 73 72 60 59
- { LA(7, 3), LA(7, 2), LA(7, 1), LA(7, 0), LA(6, 3), LA(4, 1), LA(4, 0) },
-// N/A N/A N/A N/A N/A N/A 68
- { NA, NA, NA, NA, NA, NA, LA(5, 4) },
-// N/A N/A N/A N/A 71 70 69
- { NA, NA, NA, NA, LA(6, 2), LA(6, 1), LA(6, 0) },
-};
-
-
-#define IS31_ADDR_DEFAULT 0x74 // AD connected to GND
-#define IS31_TIMEOUT 5000
-
-static GFXINLINE void init_board(GDisplay *g) {
- (void) g;
- /* I2C pins */
- palSetPadMode(GPIOB, 0, PAL_MODE_ALTERNATIVE_2); // PTB0/I2C0/SCL
- palSetPadMode(GPIOB, 1, PAL_MODE_ALTERNATIVE_2); // PTB1/I2C0/SDA
- palSetPadMode(GPIOB, 16, PAL_MODE_OUTPUT_PUSHPULL);
- palClearPad(GPIOB, 16);
- /* start I2C */
- i2cStart(&I2CD1, &i2ccfg);
- // try high drive (from kiibohd)
- I2CD1.i2c->C2 |= I2Cx_C2_HDRS;
- // try glitch fixing (from kiibohd)
- I2CD1.i2c->FLT = 4;
-}
-
-static GFXINLINE void post_init_board(GDisplay *g) {
- (void) g;
-}
-
-static GFXINLINE const uint8_t* get_led_mask(GDisplay* g) {
- (void) g;
- return led_mask;
-}
-
-static GFXINLINE uint8_t get_led_address(GDisplay* g, uint16_t x, uint16_t y)
-{
- (void) g;
- return led_mapping[y][x];
-}
-
-static GFXINLINE void set_hardware_shutdown(GDisplay* g, bool shutdown) {
- (void) g;
- if(!shutdown) {
- palSetPad(GPIOB, 16);
- }
- else {
- palClearPad(GPIOB, 16);
- }
-}
-
-static GFXINLINE void write_data(GDisplay *g, uint8_t* data, uint16_t length) {
- (void) g;
- i2cMasterTransmitTimeout(&I2CD1, IS31_ADDR_DEFAULT, data, length, 0, 0, TIME_US2I(IS31_TIMEOUT));
-}
-
-#endif /* _GDISP_LLD_BOARD_H */
diff --git a/keyboards/ergodox_infinity/board_st7565.h b/keyboards/ergodox_infinity/board_st7565.h
deleted file mode 100644
index 875ed9e65c6..00000000000
--- a/keyboards/ergodox_infinity/board_st7565.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * This file is subject to the terms of the GFX License. If a copy of
- * the license was not distributed with this file, you can obtain one at:
- *
- * http://ugfx.org/license.html
- */
-
-#ifndef _GDISP_LLD_BOARD_H
-#define _GDISP_LLD_BOARD_H
-
-#include "quantum.h"
-
-#define ST7565_LCD_BIAS ST7565_LCD_BIAS_7
-#define ST7565_COM_SCAN ST7565_COM_SCAN_DEC
-#define ST7565_PAGE_ORDER 0, 1, 2, 3
-/*
- * Custom page order for several LCD boards, e.g. HEM12864-99
- * #define ST7565_PAGE_ORDER 4,5,6,7,0,1,2,3
- */
-
-#define ST7565_A0_PIN C7
-#define ST7565_RST_PIN C8
-#define ST7565_MOSI_PIN C6
-#define ST7565_SCLK_PIN C5
-#define ST7565_SS_PIN C4
-
-// DSPI Clock and Transfer Attributes
-// Frame Size: 8 bits
-// MSB First
-// CLK Low by default
-static const SPIConfig spi1config = {
- // Operation complete callback or @p NULL.
- .end_cb = NULL,
- // The chip select line port - when not using pcs.
- .ssport = PAL_PORT(ST7565_SS_PIN),
- // brief The chip select line pad number - when not using pcs.
- .sspad = PAL_PAD(ST7565_SS_PIN),
- // SPI initialization data.
- .tar0 = SPIx_CTARn_FMSZ(7) // Frame size = 8 bytes
- | SPIx_CTARn_ASC(1) // After SCK Delay Scaler (min 50 ns) = 55.56ns
- | SPIx_CTARn_DT(0) // Delay After Transfer Scaler (no minimum)= 27.78ns
- | SPIx_CTARn_CSSCK(0) // PCS to SCK Delay Scaler (min 20 ns) = 27.78ns
- | SPIx_CTARn_PBR(0) // Baud Rate Prescaler = 2
- | SPIx_CTARn_BR(0) // Baud rate (min 50ns) = 55.56ns
-};
-
-static GFXINLINE void acquire_bus(GDisplay *g) {
- (void)g;
- // Only the LCD is using the SPI bus, so no need to acquire
- // spiAcquireBus(&SPID1);
- spiSelect(&SPID1);
-}
-
-static GFXINLINE void release_bus(GDisplay *g) {
- (void)g;
- // Only the LCD is using the SPI bus, so no need to release
- // spiReleaseBus(&SPID1);
- spiUnselect(&SPID1);
-}
-
-static GFXINLINE void init_board(GDisplay *g) {
- (void)g;
- setPinOutput(ST7565_A0_PIN);
- writePinHigh(ST7565_A0_PIN);
- setPinOutput(ST7565_RST_PIN);
- writePinHigh(ST7565_RST_PIN);
- setPinOutput(ST7565_SS_PIN);
-
- palSetPadMode(PAL_PORT(ST7565_MOSI_PIN), PAL_PAD(ST7565_MOSI_PIN), PAL_MODE_ALTERNATIVE_2);
- palSetPadMode(PAL_PORT(ST7565_SCLK_PIN), PAL_PAD(ST7565_SCLK_PIN), PAL_MODE_ALTERNATIVE_2);
-
- spiInit();
- spiStart(&SPID1, &spi1config);
- release_bus(g);
-}
-
-static GFXINLINE void post_init_board(GDisplay *g) { (void)g; }
-
-static GFXINLINE void setpin_reset(GDisplay *g, bool_t state) {
- (void)g;
- writePin(ST7565_RST_PIN, !state);
-}
-
-static GFXINLINE void write_cmd(GDisplay *g, gU8 cmd) {
- (void)g;
- writePinLow(ST7565_A0_PIN);
- spiSend(&SPID1, 1, &cmd);
-}
-
-static GFXINLINE void write_data(GDisplay *g, gU8 *data, gU16 length) {
- (void)g;
- writePinHigh(ST7565_A0_PIN);
- spiSend(&SPID1, length, data);
-}
-
-#endif /* _GDISP_LLD_BOARD_H */
diff --git a/keyboards/ergodox_infinity/config.h b/keyboards/ergodox_infinity/config.h
index 4bee8c3d931..e6f1b81f547 100644
--- a/keyboards/ergodox_infinity/config.h
+++ b/keyboards/ergodox_infinity/config.h
@@ -15,9 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef INFINITY_ERGODOX_CONFIG_H
-#define INFINITY_ERGODOX_CONFIG_H
-
+#pragma once
/* USB Device descriptor parameter */
#define VENDOR_ID 0x1c11
@@ -81,13 +79,38 @@ along with this program. If not, see .
#define LED_MATRIX_SPLIT { 38, 38 }
#define LED_DISABLE_WHEN_USB_SUSPENDED
+// LED Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
+#define ENABLE_LED_MATRIX_ALPHAS_MODS
+#define ENABLE_LED_MATRIX_BREATHING
+#define ENABLE_LED_MATRIX_BAND
+#define ENABLE_LED_MATRIX_BAND_PINWHEEL
+#define ENABLE_LED_MATRIX_BAND_SPIRAL
+#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_LED_MATRIX_CYCLE_OUT_IN
+#define ENABLE_LED_MATRIX_DUAL_BEACON
+#if defined(LED_MATRIX_KEYREACTIVE_ENABLED)
+# define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE
+# define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE
+# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS
+# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS
+# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_LED_MATRIX_SPLASH
+# define ENABLE_LED_MATRIX_MULTISPLASH
+#endif
+#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT
+#define ENABLE_LED_MATRIX_WAVE_UP_DOWN
+
/* i2c (for LED matrix) */
#define I2C1_CLOCK_SPEED 400000
#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
-#define I2C1_BANK GPIOB
-#define I2C1_SCL 0
-#define I2C1_SDA 1
+#define I2C1_SCL_PIN B0
+#define I2C1_SDA_PIN B1
#ifdef ST7565_ENABLE
/* LCD driver */
@@ -115,8 +138,6 @@ along with this program. If not, see .
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
-#define VISUALIZER_USER_DATA_SIZE 16
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
@@ -134,5 +155,3 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/ergodox_infinity/ergodox_infinity.c b/keyboards/ergodox_infinity/ergodox_infinity.c
index 8f5b068a72a..e6ac2c4559c 100644
--- a/keyboards/ergodox_infinity/ergodox_infinity.c
+++ b/keyboards/ergodox_infinity/ergodox_infinity.c
@@ -3,10 +3,6 @@
#include
#include
#include "eeconfig.h"
-#include "serial_link/system/serial_link.h"
-#ifdef VISUALIZER_ENABLE
-# include "lcd_backlight.h"
-#endif
#define RED_PIN 1
#define GREEN_PIN 2
@@ -87,11 +83,7 @@ static uint16_t cie_lightness(uint16_t v) {
return y * 65535.0f;
}
-#ifdef VISUALIZER_ENABLE
-void lcd_backlight_hal_color(uint16_t r, uint16_t g, uint16_t b) {
-#else
void ergodox_infinity_lcd_color(uint16_t r, uint16_t g, uint16_t b) {
-#endif
CHANNEL_RED.CnV = cie_lightness(r);
CHANNEL_GREEN.CnV = cie_lightness(g);
CHANNEL_BLUE.CnV = cie_lightness(b);
@@ -108,12 +100,10 @@ void keyboard_pre_init_kb() {
setPinOutput(B16);
writePinHigh(B16);
#endif
-#ifndef VISUALIZER_ENABLE
// The backlight always has to be initialized, otherwise it will stay lit
lcd_backlight_hal_init();
-# ifdef ST7565_ENABLE
+#ifdef ST7565_ENABLE
ergodox_infinity_lcd_color(UINT16_MAX / 2, UINT16_MAX / 2, UINT16_MAX / 2);
-# endif
#endif
keyboard_pre_init_user();
}
@@ -184,7 +174,7 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
#endif
#ifdef LED_MATRIX_ENABLE
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
// The numbers in the comments are the led numbers DXX on the PCB
/* Refer to IS31 manual for these locations
* driver
diff --git a/keyboards/ergodox_infinity/ergodox_infinity.h b/keyboards/ergodox_infinity/ergodox_infinity.h
index 81ac1f338ab..b9636b69be3 100644
--- a/keyboards/ergodox_infinity/ergodox_infinity.h
+++ b/keyboards/ergodox_infinity/ergodox_infinity.h
@@ -1,5 +1,4 @@
-#ifndef KEYBOARDS_ERGODOX_INFINITY_INFINITY_H_
-#define KEYBOARDS_ERGODOX_INFINITY_INFINITY_H_
+#pragma once
#include "quantum.h"
@@ -80,85 +79,75 @@ inline void ergodox_led_all_set(uint8_t n) {
ergodox_right_led_3_set(n);
}
-#ifndef VISUALIZER_ENABLE
void ergodox_infinity_lcd_color(uint16_t r, uint16_t g, uint16_t b);
-#endif
-/*
- * LEFT HAND: LINES 88-95
- * RIGHT HAND: LINES 97-104
- */
+#define XXX KC_NO
+
#define LAYOUT_ergodox( \
- A80, A70, A60, A50, A40, A30, A20, \
- A81, A71, A61, A51, A41, A31, A21, \
- A82, A72, A62, A52, A42, A32, \
- A83, A73, A63, A53, A43, A33, A23, \
- A84, A74, A64, A54, A44, \
+ A80, A70, A60, A50, A40, A30, A20, \
+ A81, A71, A61, A51, A41, A31, A21, \
+ A82, A72, A62, A52, A42, A32, \
+ A83, A73, A63, A53, A43, A33, A23, \
+ A84, A74, A64, A54, A44, \
A13, A03, \
A04, \
A34, A24, A14, \
- \
+\
B20, B30, B40, B50, B60, B70, B80, \
B21, B31, B41, B51, B61, B71, B81, \
B32, B42, B52, B62, B72, B82, \
B23, B33, B43, B53, B63, B73, B83, \
B44, B54, B64, B74, B84, \
- B03, B13, \
- B04, \
+ B03, B13, \
+ B04, \
B14, B24, B34 \
) { \
- { KC_NO, KC_NO, KC_NO, A03, A04 }, \
- { KC_NO, KC_NO, KC_NO, A13, A14 }, \
- { A20, A21, KC_NO, A23, A24 }, \
- { A30, A31, A32, A33, A34 }, \
- { A40, A41, A42, A43, A44 }, \
- { A50, A51, A52, A53, A54 }, \
- { A60, A61, A62, A63, A64 }, \
- { A70, A71, A72, A73, A74 }, \
- { A80, A81, A82, A83, A84 }, \
- { KC_NO, KC_NO, KC_NO, B03, B04 }, \
- { KC_NO, KC_NO, KC_NO, B13, B14 }, \
- { B20, B21, KC_NO, B23, B24 }, \
- { B30, B31, B32, B33, B34 }, \
- { B40, B41, B42, B43, B44 }, \
- { B50, B51, B52, B53, B54 }, \
- { B60, B61, B62, B63, B64 }, \
- { B70, B71, B72, B73, B74 }, \
- { B80, B81, B82, B83, B84 } \
+ { XXX, XXX, XXX, A03, A04 }, \
+ { XXX, XXX, XXX, A13, A14 }, \
+ { A20, A21, XXX, A23, A24 }, \
+ { A30, A31, A32, A33, A34 }, \
+ { A40, A41, A42, A43, A44 }, \
+ { A50, A51, A52, A53, A54 }, \
+ { A60, A61, A62, A63, A64 }, \
+ { A70, A71, A72, A73, A74 }, \
+ { A80, A81, A82, A83, A84 }, \
+ { XXX, XXX, XXX, B03, B04 }, \
+ { XXX, XXX, XXX, B13, B14 }, \
+ { B20, B21, XXX, B23, B24 }, \
+ { B30, B31, B32, B33, B34 }, \
+ { B40, B41, B42, B43, B44 }, \
+ { B50, B51, B52, B53, B54 }, \
+ { B60, B61, B62, B63, B64 }, \
+ { B70, B71, B72, B73, B74 }, \
+ { B80, B81, B82, B83, B84 } \
}
-/* -------------- LEFT HAND -------------- -------------- RIGHT HAND -------------- */
-#define LAYOUT_ergodox_pretty( \
- \
- A80, A70, A60, A50, A40, A30, A20, B20, B30, B40, B50, B60, B70, B80, \
- A81, A71, A61, A51, A41, A31, A21, B21, B31, B41, B51, B61, B71, B81, \
- A82, A72, A62, A52, A42, A32, B32, B42, B52, B62, B72, B82, \
- A83, A73, A63, A53, A43, A33, A23, B23, B33, B43, B53, B63, B73, B83, \
- A84, A74, A64, A54, A44, B44, B54, B64, B74, B84, \
- A13, A03, B03, B13, \
- A04, B04, \
- A34, A24, A14, B14, B24, B34 ) \
- \
- /* matrix positions */ \
- { \
- { KC_NO, KC_NO, KC_NO, A03, A04 }, \
- { KC_NO, KC_NO, KC_NO, A13, A14 }, \
- { A20, A21, KC_NO, A23, A24 }, \
- { A30, A31, A32, A33, A34 }, \
- { A40, A41, A42, A43, A44 }, \
- { A50, A51, A52, A53, A54 }, \
- { A60, A61, A62, A63, A64 }, \
- { A70, A71, A72, A73, A74 }, \
- { A80, A81, A82, A83, A84 }, \
- { KC_NO, KC_NO, KC_NO, B03, B04 }, \
- { KC_NO, KC_NO, KC_NO, B13, B14 }, \
- { B20, B21, KC_NO, B23, B24 }, \
- { B30, B31, B32, B33, B34 }, \
- { B40, B41, B42, B43, B44 }, \
- { B50, B51, B52, B53, B54 }, \
- { B60, B61, B62, B63, B64 }, \
- { B70, B71, B72, B73, B74 }, \
- { B80, B81, B82, B83, B84 } \
+#define LAYOUT_ergodox_pretty( \
+ A80, A70, A60, A50, A40, A30, A20, B20, B30, B40, B50, B60, B70, B80, \
+ A81, A71, A61, A51, A41, A31, A21, B21, B31, B41, B51, B61, B71, B81, \
+ A82, A72, A62, A52, A42, A32, B32, B42, B52, B62, B72, B82, \
+ A83, A73, A63, A53, A43, A33, A23, B23, B33, B43, B53, B63, B73, B83, \
+ A84, A74, A64, A54, A44, B44, B54, B64, B74, B84, \
+ A13, A03, B03, B13, \
+ A04, B04, \
+ A34, A24, A14, B14, B24, B34 \
+) { \
+ { XXX, XXX, XXX, A03, A04 }, \
+ { XXX, XXX, XXX, A13, A14 }, \
+ { A20, A21, XXX, A23, A24 }, \
+ { A30, A31, A32, A33, A34 }, \
+ { A40, A41, A42, A43, A44 }, \
+ { A50, A51, A52, A53, A54 }, \
+ { A60, A61, A62, A63, A64 }, \
+ { A70, A71, A72, A73, A74 }, \
+ { A80, A81, A82, A83, A84 }, \
+ { XXX, XXX, XXX, B03, B04 }, \
+ { XXX, XXX, XXX, B13, B14 }, \
+ { B20, B21, XXX, B23, B24 }, \
+ { B30, B31, B32, B33, B34 }, \
+ { B40, B41, B42, B43, B44 }, \
+ { B50, B51, B52, B53, B54 }, \
+ { B60, B61, B62, B63, B64 }, \
+ { B70, B71, B72, B73, B74 }, \
+ { B80, B81, B82, B83, B84 } \
}
-
-#endif /* KEYBOARDS_ERGODOX_INFINITY_INFINITY_H_ */
diff --git a/keyboards/ergodox_infinity/gfxconf.h b/keyboards/ergodox_infinity/gfxconf.h
deleted file mode 100644
index ca338399d31..00000000000
--- a/keyboards/ergodox_infinity/gfxconf.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * This file has a different license to the rest of the uGFX system.
- * You can copy, modify and distribute this file as you see fit.
- * You do not need to publish your source modifications to this file.
- * The only thing you are not permitted to do is to relicense it
- * under a different license.
- */
-
-/**
- * Copy this file into your project directory and rename it as gfxconf.h
- * Edit your copy to turn on the uGFX features you want to use.
- * The values below are the defaults.
- *
- * Only remove the comments from lines where you want to change the
- * default value. This allows definitions to be included from
- * driver makefiles when required and provides the best future
- * compatibility for your project.
- *
- * Please use spaces instead of tabs in this file.
- */
-
-#ifndef _GFXCONF_H
-#define _GFXCONF_H
-
-#include "common_gfxconf.h"
-
-#endif /* _GFXCONF_H */
diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/config.h b/keyboards/ergodox_infinity/keymaps/dudeofawesome/config.h
index 161958233e2..9dcf8a7f43e 100644
--- a/keyboards/ergodox_infinity/keymaps/dudeofawesome/config.h
+++ b/keyboards/ergodox_infinity/keymaps/dudeofawesome/config.h
@@ -6,6 +6,4 @@
#include "../../config.h"
#include "dudeofawesome.h"
-#include "./visualizer.h"
-
#endif
diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c b/keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c
index c3ea48654da..675b56edec7 100644
--- a/keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c
+++ b/keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c
@@ -471,8 +471,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
void matrix_init_user() {
- backlight_enable();
- backlight_level(BACKLIGHT_LEVELS);
+ led_matrix_enable_noeeprom();
+ led_matrix_set_val_noeeprom(UINT8_MAX);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/simple_visualizer.h b/keyboards/ergodox_infinity/keymaps/dudeofawesome/simple_visualizer.h
deleted file mode 100644
index 9213e99f428..00000000000
--- a/keyboards/ergodox_infinity/keymaps/dudeofawesome/simple_visualizer.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/* 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 .
- */
-
-#ifndef KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_
-#define KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_
-
-// Currently we are assuming that both the backlight and LCD are enabled
-// But it's entirely possible to write a custom visualizer that use only
-// one of them
-#ifndef LCD_BACKLIGHT_ENABLE
-#error This visualizer needs that LCD backlight is enabled
-#endif
-
-#ifndef LCD_ENABLE
-#error This visualizer needs that LCD is enabled
-#endif
-
-#include "visualizer.h"
-#include "visualizer_keyframes.h"
-#include "lcd_keyframes.h"
-#include "lcd_backlight_keyframes.h"
-#include "system/serial_link.h"
-#include "led.h"
-#include "default_animations.h"
-
-static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF);
-static const uint32_t initial_color = LCD_COLOR(0, 0, 0);
-
-static bool initial_update = true;
-
-// Feel free to modify the animations below, or even add new ones if needed
-
-static keyframe_animation_t lcd_layer_display = {
- .num_frames = 1,
- .loop = false,
- .frame_lengths = {gfxMillisecondsToTicks(0)},
- .frame_functions = {lcd_keyframe_display_layer_and_led_states}
-};
-
-// The color animation animates the LCD color when you change layers
-static keyframe_animation_t color_animation = {
- .num_frames = 2,
- .loop = false,
- // Note that there's a 200 ms no-operation frame,
- // this prevents the color from changing when activating the layer
- // momentarily
- .frame_lengths = {gfxMillisecondsToTicks(1), gfxMillisecondsToTicks(5)},
- .frame_functions = {keyframe_no_operation, lcd_backlight_keyframe_animate_color},
-};
-
-void initialize_user_visualizer(visualizer_state_t* state) {
- // The brightness will be dynamically adjustable in the future
- // But for now, change it here.
- lcd_backlight_brightness(130);
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- initial_update = true;
- start_keyframe_animation(&default_startup_animation);
-}
-
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state);
-
-void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
- // Add more tests, change the colors and layer texts here
- // Usually you want to check the high bits (higher layers first)
- // because that's the order layers are processed for keypresses
- // You can for check for example:
- // state->status.layer
- // state->status.default_layer
- // state->status.leds (see led.h for available statuses)
-
- uint32_t prev_color = state->target_lcd_color;
- const char* prev_layer_text = state->layer_text;
-
- get_visualizer_layer_and_color(state);
-
- if (initial_update || prev_color != state->target_lcd_color) {
- start_keyframe_animation(&color_animation);
- }
-
- if (initial_update || prev_layer_text != state->layer_text) {
- start_keyframe_animation(&lcd_layer_display);
- }
- // You can also stop existing animations, and start your custom ones here
- // remember that you should normally have only one animation for the LCD
- // and one for the background. But you can also combine them if you want.
-}
-
-void user_visualizer_suspend(visualizer_state_t* state) {
- state->layer_text = "Suspending...";
- uint8_t hue = LCD_HUE(state->current_lcd_color);
- uint8_t sat = LCD_SAT(state->current_lcd_color);
- state->target_lcd_color = LCD_COLOR(hue, sat, 0);
- start_keyframe_animation(&default_suspend_animation);
-}
-
-void user_visualizer_resume(visualizer_state_t* state) {
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- initial_update = true;
- start_keyframe_animation(&default_startup_animation);
-}
-
-#endif /* KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_ */
diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c b/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c
deleted file mode 100644
index 54fc2363c76..00000000000
--- a/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-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 .
-*/
-
-#include "./simple_visualizer.h"
-#include "util.h"
-#include "layers.h"
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state) {
- switch(biton32(default_layer_state)) {
- case _QWERTY:
- state->layer_text = "QWERTY";
- state->target_lcd_color = LCD_COLOR(0, 255, 128);
- break;
- case _WORKMAN:
- state->layer_text = "Workman";
- state->target_lcd_color = LCD_COLOR(80, 255, 128);
- break;
- case _DVORAK:
- state->layer_text = "Dvorak";
- state->target_lcd_color = LCD_COLOR(194, 255, 128);
- break;
- case _COLEMAK:
- state->layer_text = "Colemak";
- state->target_lcd_color = LCD_COLOR(18, 255, 128);
- break;
- }
-
- switch(biton32(state->status.layer)) {
- case _LOWER:
- state->layer_text = "Lower";
- state->target_lcd_color = LCD_COLOR(141, 255, 255);
- break;
- case _RAISE:
- state->layer_text = "Raise";
- state->target_lcd_color = LCD_COLOR(18, 255, 255);
- break;
- case _ADJUST:
- state->layer_text = "Adjust";
- state->target_lcd_color = LCD_COLOR(194, 255, 255);
- break;
- case _NUM:
- state->layer_text = "Numpad";
- state->target_lcd_color = LCD_COLOR(80, 255, 255);
- break;
- case _MOUSE:
- state->layer_text = "Mouse";
- state->target_lcd_color = LCD_COLOR(300, 255, 255);
- break;
- case _GAME:
- state->layer_text = "Game";
- state->target_lcd_color = LCD_COLOR(300, 255, 255);
- break;
- case _QWERTY: case _WORKMAN: case _DVORAK: case _COLEMAK:
- break;
- default:
- state->layer_text = "NONE";
- state->target_lcd_color = LCD_COLOR(0, 255, 255);
- break;
- }
-}
diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.h b/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.h
deleted file mode 100644
index 740a951ec88..00000000000
--- a/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* 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 .
- */
-
-#ifndef VISUALIZER_H_
-#define VISUALIZER_H_
-
-#include "visualizer.h"
-#include "led.h"
-
-void ergodox_led_lower_on (void);
-void ergodox_led_raise_on (void);
-void ergodox_led_adjust_on (void);
-
-void ergodox_led_lower_off (void);
-void ergodox_led_raise_off (void);
-void ergodox_led_adjust_off (void);
-
-void ergodox_led_lower_set (uint8_t n);
-void ergodox_led_raise_set (uint8_t n);
-void ergodox_led_adjust_set (uint8_t n);
-
-#endif /* VISUALIZER_H_ */
diff --git a/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.c b/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.c
deleted file mode 100644
index 61a724c63f5..00000000000
--- a/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.c
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
-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 .
-*/
-
-#include "visualizer.h"
-#include "gfx.h"
-#include "math.h"
-#include "default_animations.h"
-#include "led_backlight_keyframes.h"
-
-#define NUM_ROWS LED_HEIGHT
-#define NUM_COLS LED_WIDTH
-
-#define ONESIDESCAN 10
-#define BOTHSIDESCAN 20
-#define FULL_ON LUMA2COLOR(255)
-#define THREE_QUARTER LUMA2COLOR(200)
-#define HALF_ON LUMA2COLOR(150)
-#define ONE_QUARTER LUMA2COLOR(50)
-
-#define CROSSFADE_TIME 500
-#define GRADIENT_TIME 3000
-bool led_backlight_keyframe_one_period_sweep(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_backlight_keyframe_half_period_sweep_to_on(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_backlight_keyframe_half_period_sweep_to_off(keyframe_animation_t* animation, visualizer_state_t* state);
-keyframe_animation_t Fade_in_all_leds = {
- .num_frames = 1,
- .loop = false,
- .frame_lengths = {
- CROSSFADE_TIME,
- },
- .frame_functions = {
- led_backlight_keyframe_fade_in_all,
- },
-};
-keyframe_animation_t decreasing_gradient = {
- .num_frames = 8,
- .loop = true,
- .frame_lengths = {
- gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in)
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out)
- 0, // normal leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in)
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out)
- 0, // normal leds
- },
- .frame_functions = {
- led_backlight_keyframe_one_period_sweep,
- led_backlight_keyframe_mirror_orientation,
- keyframe_no_operation,
- keyframe_no_operation,
- keyframe_no_operation,
- keyframe_no_operation,
- led_backlight_keyframe_one_period_sweep,
- led_backlight_keyframe_normal_orientation,
-
- },
-};
-
-
-
-static uint8_t off_on_off_gradient(float t, float index, float num) {
- const float two_pi = M_PI * 2.0f;
- float normalized_index = (1.0f - index / (num - 1.0f)) * two_pi;
- float x = t * two_pi + normalized_index-M_PI;
- if((1*M_PI) < x && x < (3*M_PI))
- {
- float v = 0.5 * (cosf(x) + 1.0f);
- return (uint8_t)(255.0f * v);
- }
- else
- {
- return 0;
- }
-}
-static uint8_t off_on_gradient(float t, float index, float num) {
- const float two_pi = M_PI * 2.0f;
- float normalized_index = (1.0f - index / (num - 1.0f)) * two_pi;
- float x = t * two_pi + normalized_index-M_PI;
- float v;
- if((1*M_PI) < x && x < (2*M_PI))
- {
- v = 0.5 * (cosf(x) + 1.0f);
- }
- else if(x >= (2*M_PI))
- {
- v = 1;
- }
- else
- {
- v = 0;
- }
- return (uint8_t)(255.0f * v);
-}
-static uint8_t on_off_gradient(float t, float index, float num) {
- const float two_pi = M_PI * 2.0f;
- float normalized_index = (1.0f - index / (num - 1.0f)) * two_pi;
- float x = t * two_pi + normalized_index-M_PI;
- float v;
- if((2*M_PI) < x && x < (3*M_PI))
- {
- v = 0.5 * (cosf(x) + 1.0f);
-
- }
- else if(x >= (3*M_PI))
- {
- v = 0;
- }
- else
- {
- v = 1;
- }
- return (uint8_t)(255.0f * v);
-}
-
-bool led_backlight_keyframe_one_period_sweep(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- float frame_length = animation->frame_lengths[animation->current_frame];
- float current_pos = frame_length - animation->time_left_in_frame;
- float t = current_pos / frame_length;
- for (int i=0; i< NUM_COLS; i++) {
- uint8_t color = off_on_off_gradient(t*2, i, NUM_COLS);
- gdispGDrawLine(LED_DISPLAY, i, 0, i, NUM_ROWS - 1, LUMA2COLOR(color));
- }
- return true;
-}
-
-bool led_backlight_keyframe_half_period_sweep_to_on(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- float frame_length = animation->frame_lengths[animation->current_frame];
- float current_pos = frame_length - animation->time_left_in_frame;
- float t = current_pos / frame_length;
- for (int i=0; i< NUM_COLS; i++) {
- uint8_t color = off_on_gradient(t*2, i, NUM_COLS);
- gdispGDrawLine(LED_DISPLAY, i, 0, i, NUM_ROWS - 1, LUMA2COLOR(color));
- }
- return true;
-}
-bool led_backlight_keyframe_half_period_sweep_to_off(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- float frame_length = animation->frame_lengths[animation->current_frame];
- float current_pos = frame_length - animation->time_left_in_frame;
- float t = current_pos / frame_length;
- for (int i=0; i< NUM_COLS; i++) {
- uint8_t color = on_off_gradient(t*2, i, NUM_COLS);
- gdispGDrawLine(LED_DISPLAY, i, 0, i, NUM_ROWS - 1, LUMA2COLOR(color));
- }
- return true;
-}
-
-
-/*
- +---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+
-| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | phase |
-+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-| 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
-| 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 |
-| 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 |
-| 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4 |
-| 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 |
-| 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 6 |
-| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 7 |
-| 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 8 |
-| 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 9 |
-| 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 10 |
-| 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 11 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 12 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 13 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 14 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 15 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 16 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 17 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 18 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 19 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 20 |
-+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+
-*/
-
-#ifdef MASTER_IS_ON_RIGHT /*right side*/
-keyframe_animation_t sweep_on_sweep_off_left_and_right = {
- .num_frames = 12,
- .loop = true,
- .frame_lengths = {
- 0,
- 1,
- gfxMillisecondsToTicks(GRADIENT_TIME), // left on
- gfxMillisecondsToTicks(GRADIENT_TIME), // right on
- gfxMillisecondsToTicks(GRADIENT_TIME), // left off
- gfxMillisecondsToTicks(GRADIENT_TIME), // right off
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // right on
- gfxMillisecondsToTicks(GRADIENT_TIME), // left on
- gfxMillisecondsToTicks(GRADIENT_TIME), // right off
- gfxMillisecondsToTicks(GRADIENT_TIME), // left off
- 0, // normal leds
- },
- .frame_functions = {
- led_backlight_keyframe_mirror_orientation,
- led_backlight_keyframe_fade_out_all,
- keyframe_no_operation,
- led_backlight_keyframe_half_period_sweep_to_on,
- keyframe_no_operation,
- led_backlight_keyframe_half_period_sweep_to_off,
- led_backlight_keyframe_normal_orientation,
- led_backlight_keyframe_half_period_sweep_to_on,
- keyframe_no_operation,
- led_backlight_keyframe_half_period_sweep_to_off,
- keyframe_no_operation,
- led_backlight_keyframe_mirror_orientation,
-
- },
-};
-keyframe_animation_t both_sides_fade_across = {
- .num_frames = 10,
- .loop = true,
- .frame_lengths = {
- 0,
- 1,
- gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in)
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out)
- 0, // normal leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in)
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out)
- 0, // normal leds
- },
- .frame_functions = {
- led_backlight_keyframe_mirror_orientation,
- led_backlight_keyframe_fade_out_all,
- keyframe_no_operation,
- keyframe_no_operation,
- led_backlight_keyframe_one_period_sweep,
- led_backlight_keyframe_normal_orientation,
- led_backlight_keyframe_one_period_sweep,
- led_backlight_keyframe_mirror_orientation,
- keyframe_no_operation,
- keyframe_no_operation,
- },
-};
-
-#else /*left side*/
-keyframe_animation_t sweep_on_sweep_off_left_and_right = {
- .num_frames = 10,
- .loop = true,
- .frame_lengths = {
- gfxMillisecondsToTicks(GRADIENT_TIME), // left on
- gfxMillisecondsToTicks(GRADIENT_TIME), // right on
- gfxMillisecondsToTicks(GRADIENT_TIME), // left off
- gfxMillisecondsToTicks(GRADIENT_TIME), // right off
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // right on
- gfxMillisecondsToTicks(GRADIENT_TIME), // left on
- gfxMillisecondsToTicks(GRADIENT_TIME), // right off
- gfxMillisecondsToTicks(GRADIENT_TIME), // left off
- 0, // normal leds
- },
- .frame_functions = {
- led_backlight_keyframe_half_period_sweep_to_on,
- keyframe_no_operation,
- led_backlight_keyframe_half_period_sweep_to_off,
- keyframe_no_operation,
- led_backlight_keyframe_mirror_orientation,
- keyframe_no_operation,
- led_backlight_keyframe_half_period_sweep_to_on,
- keyframe_no_operation,
- led_backlight_keyframe_half_period_sweep_to_off,
- led_backlight_keyframe_normal_orientation,
-
- },
-};
-keyframe_animation_t both_sides_fade_across = {
- .num_frames = 8,
- .loop = true,
- .frame_lengths = {
- gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in)
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out)
- 0, // normal leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in)
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out)
- 0, // normal leds
- },
- .frame_functions = {
- led_backlight_keyframe_one_period_sweep,
- led_backlight_keyframe_mirror_orientation,
- keyframe_no_operation,
- keyframe_no_operation,
- keyframe_no_operation,
- keyframe_no_operation,
- led_backlight_keyframe_one_period_sweep,
- led_backlight_keyframe_normal_orientation,
-
- },
-};
-
-
-#endif
-
-#define RED 0
-#define ORANGE 21
-#define YELLOW 42
-#define SPRING_GREEN 64
-#define GREEN 85
-#define TURQUOISE 107
-#define CYAN 127
-#define OCEAN 149
-#define BLUE 170
-#define VIOLET 192
-#define MAGENTA 212
-#define RASPBERRY 234
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state) {
- uint8_t saturation = 255;
- /* if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
- saturation = 255;
- } */
-
- if (state->status.layer & 0x400) {
- state->target_lcd_color = LCD_COLOR(OCEAN, saturation, 0xFF);
- state->layer_text = "STENOGRAPHY";
- }
- else if (state->status.layer & 0x200) {
- state->target_lcd_color = LCD_COLOR(GREEN, saturation, 0xFF);
- state->layer_text = "FUNCTION";
- }
- else if (state->status.layer & 0x100) {
- state->target_lcd_color = LCD_COLOR(MAGENTA, saturation, 0xFF);
- state->layer_text = "Shortcuts Layer";
- stop_keyframe_animation(&sweep_on_sweep_off_left_and_right);
- start_keyframe_animation(&led_test_animation);
- }
- else if (state->status.layer & 0x80) {
- state->target_lcd_color = LCD_COLOR(VIOLET, saturation, 0xFF);
- state->layer_text = "Plover";
- }
- else if (state->status.layer & 0x40) {
- state->target_lcd_color = LCD_COLOR(RASPBERRY, saturation, 0xFF);
- state->layer_text = "Mirrored Symbols";
- }
- else if (state->status.layer & 0x20) {
- state->target_lcd_color = LCD_COLOR(RED, saturation, 0xFF);
- state->layer_text = "Symbols";
- }
- else if (state->status.layer & 0x8) {
- state->target_lcd_color = LCD_COLOR(OCEAN, saturation, 0xFF);
- state->layer_text = "Mirrored Dvorak";
- }
- else if (state->status.layer & 0x4) {
- state->target_lcd_color = LCD_COLOR(BLUE, saturation, 0xFF);
- state->layer_text = "Dvorak";
- stop_keyframe_animation(&led_test_animation);
- start_keyframe_animation(&sweep_on_sweep_off_left_and_right);
- }
- else if (state->status.layer & 0x2) {
- state->target_lcd_color = LCD_COLOR(ORANGE, saturation, 0xFF);
- state->layer_text = "Mirrored Qwerty";
- }
- else {
- state->target_lcd_color = LCD_COLOR(YELLOW, saturation, 0xFF);
- state->layer_text = "Qwerty";
- stop_keyframe_animation(&led_test_animation);
- start_keyframe_animation(&Fade_in_all_leds);
- }
-}
diff --git a/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.h b/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.h
deleted file mode 100644
index c97a7a22a58..00000000000
--- a/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/* 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 .
- */
-
-#ifndef VISUALIZER_H_
-#define VISUALIZER_H_
-
-// Currently we are assuming that both the backlight and LCD are enabled
-// But it's entirely possible to write a custom visualizer that use only
-// one of them
-#ifndef LCD_BACKLIGHT_ENABLE
-#error This visualizer needs that LCD backlight is enabled
-#endif
-
-#ifndef LCD_ENABLE
-#error This visualizer needs that LCD is enabled
-#endif
-
-#include "visualizer.h"
-#include "visualizer_keyframes.h"
-#include "lcd_keyframes.h"
-#include "lcd_backlight_keyframes.h"
-#include "system/serial_link.h"
-#include "led.h"
-#include "default_animations.h"
-
-static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF);
-static const uint32_t initial_color = LCD_COLOR(0, 0, 0);
-
-static bool initial_update = true;
-
-// Feel free to modify the animations below, or even add new ones if needed
-extern keyframe_animation_t KITT_Scanner_animation;
-
-static keyframe_animation_t lcd_layer_display = {
- .num_frames = 1,
- .loop = false,
- .frame_lengths = {gfxMillisecondsToTicks(0)},
- .frame_functions = {lcd_keyframe_display_layer_and_led_states}
-};
-
-// The color animation animates the LCD color when you change layers
-static keyframe_animation_t color_animation = {
- .num_frames = 2,
- .loop = false,
- // Note that there's a 200 ms no-operation frame,
- // this prevents the color from changing when activating the layer
- // momentarily
- .frame_lengths = {gfxMillisecondsToTicks(200), gfxMillisecondsToTicks(500)},
- .frame_functions = {keyframe_no_operation, lcd_backlight_keyframe_animate_color},
-};
-
-void initialize_user_visualizer(visualizer_state_t* state) {
- // The brightness will be dynamically adjustable in the future
- // But for now, change it here.
- lcd_backlight_brightness(130);
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- initial_update = true;
- start_keyframe_animation(&default_startup_animation);
-}
-
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state);
-
-void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
- // Add more tests, change the colors and layer texts here
- // Usually you want to check the high bits (higher layers first)
- // because that's the order layers are processed for keypresses
- // You can for check for example:
- // state->status.layer
- // state->status.default_layer
- // state->status.leds (see led.h for available statuses)
-
- uint32_t prev_color = state->target_lcd_color;
- const char* prev_layer_text = state->layer_text;
-
- get_visualizer_layer_and_color(state);
-
- if (initial_update || prev_color != state->target_lcd_color) {
- start_keyframe_animation(&color_animation);
- }
-
- if (initial_update || prev_layer_text != state->layer_text) {
- start_keyframe_animation(&lcd_layer_display);
- }
- // You can also stop existing animations, and start your custom ones here
- // remember that you should normally have only one animation for the LCD
- // and one for the background. But you can also combine them if you want.
-
-}
-
-void user_visualizer_suspend(visualizer_state_t* state) {
- state->layer_text = "Suspending...";
- uint8_t hue = LCD_HUE(state->current_lcd_color);
- uint8_t sat = LCD_SAT(state->current_lcd_color);
- state->target_lcd_color = LCD_COLOR(hue, sat, 0);
- start_keyframe_animation(&default_suspend_animation);
-}
-
-void user_visualizer_resume(visualizer_state_t* state) {
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- initial_update = true;
- start_keyframe_animation(&default_startup_animation);
-}
-
-#endif /* VISUALIZER_H_ */
diff --git a/keyboards/ergodox_infinity/readme.md b/keyboards/ergodox_infinity/readme.md
index 73ee3bc1df1..c51bdd7c82d 100644
--- a/keyboards/ergodox_infinity/readme.md
+++ b/keyboards/ergodox_infinity/readme.md
@@ -13,18 +13,16 @@ for the left and right halves seperately. To flash them:
- Install the firmware with `sudo make ergodox_infinity:keymapname:dfu-util`
- - Build right hand firmware with `make ergodox_infinity:keymapname MASTER=right`
-
- Plug in the right hand keyboard only.
- Press the program button (back of keyboard, above thumb pad).
- - Install the firmware with `sudo make ergodox_infinity:keymapname:dfu-util MASTER=right`
+ - Install the firmware with `sudo make ergodox_infinity:keymapname:dfu-util`
More information on the Infinity firmware is available in the [TMK/chibios for
Input Club Infinity Ergodox](https://github.com/fredizzimo/infinity_ergodox/blob/master/README.md)
-## Infinity Master/Two Halves
+## Infinity Two Halves
The Infinity is two completely independent keyboards, that can connect together.
You have a few options in how you flash the firmware:
@@ -32,21 +30,10 @@ You have a few options in how you flash the firmware:
- Add `#define EE_HANDS` to your config.h, initialize the EEPROM values (see below),
and then flash the same firmware to both halves.
-- Flash the left half, rebuild the firmware with "MASTER=right" and then flash
- the right half. This allows you to plug in either half directly to the
- computer and is what the above instructions do.
-
-- Flash the left half, then flash the same firmware on the right. This only
- works when the left half is plugged directly to the computer and the keymap
- is mirrored. It saves the small extra step of rebuilding with
- "MASTER=right".
-
-- The same as the previous one but with "MASTER=right" when you build the
- firmware, then flash the same firmware to both halves. You just have to
- directly connect the right half to the computer.
+- Flash with the instructions above, which assume the left hand is connected to USB.
- For minor changes such as changing only the keymap without having updated
- any part of the firmware code itself, you can program only the MASTER half,
+ any part of the firmware code itself, you can program only the half connected to USB,
but it is safest to program both halves.
### EE_HANDS initialization
@@ -74,7 +61,6 @@ They only need to be done once, unless you reset the EEPROM later.
- Add `#define EE_HANDS` to the config.h file of your keymap, and build your firmware using
`make ergodox_infinity:keymapname`.
- - After this, you can flash both halves with the same firmware, _without_ having to rebuild with
- "MASTER=right" or risking a mirrored keyboard when connected the wrong way.
+ - After this, you can flash both halves with the same firmware, _without_ risking a mirrored keyboard when connected the wrong way.
If you reset your EEPROM later, you'll have to follow these steps again, though.
diff --git a/keyboards/ergodox_infinity/rules.mk b/keyboards/ergodox_infinity/rules.mk
index 06b62f547da..b6922e1ee69 100644
--- a/keyboards/ergodox_infinity/rules.mk
+++ b/keyboards/ergodox_infinity/rules.mk
@@ -34,11 +34,4 @@ ST7565_ENABLE = yes
LED_MATRIX_ENABLE = yes
LED_MATRIX_DRIVER = IS31FL3731
-# Config for Visualizer (set VISUALIZER_ENABLE = yes and ST7565_ENABLE = no to use)
-LCD_ENABLE = yes
-LCD_BACKLIGHT_ENABLE = yes
-LCD_DRIVER = st7565
-LCD_WIDTH = 128
-LCD_HEIGHT = 32
-
LAYOUTS = ergodox
diff --git a/keyboards/ergodox_infinity/simple_visualizer.h b/keyboards/ergodox_infinity/simple_visualizer.h
deleted file mode 100644
index 73d0e088700..00000000000
--- a/keyboards/ergodox_infinity/simple_visualizer.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/* 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 .
- */
-
-#ifndef KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_
-#define KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_
-
-// Currently we are assuming that both the backlight and LCD are enabled
-// But it's entirely possible to write a custom visualizer that use only
-// one of them
-#ifndef LCD_BACKLIGHT_ENABLE
-#error This visualizer needs that LCD backlight is enabled
-#endif
-
-#ifndef LCD_ENABLE
-#error This visualizer needs that LCD is enabled
-#endif
-
-#include "visualizer.h"
-#include "visualizer_keyframes.h"
-#include "lcd_keyframes.h"
-#include "lcd_backlight_keyframes.h"
-#include "system/serial_link.h"
-#include "led.h"
-#include "default_animations.h"
-
-static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF);
-static const uint32_t initial_color = LCD_COLOR(0, 0, 0);
-
-static bool initial_update = true;
-
-// Feel free to modify the animations below, or even add new ones if needed
-
-static keyframe_animation_t lcd_layer_display = {
- .num_frames = 1,
- .loop = false,
- .frame_lengths = {gfxMillisecondsToTicks(0)},
- .frame_functions = {lcd_keyframe_display_layer_and_led_states}
-};
-
-// The color animation animates the LCD color when you change layers
-static keyframe_animation_t color_animation = {
- .num_frames = 2,
- .loop = false,
- // Note that there's a 200 ms no-operation frame,
- // this prevents the color from changing when activating the layer
- // momentarily
- .frame_lengths = {gfxMillisecondsToTicks(200), gfxMillisecondsToTicks(500)},
- .frame_functions = {keyframe_no_operation, lcd_backlight_keyframe_animate_color},
-};
-
-void initialize_user_visualizer(visualizer_state_t* state) {
- // The brightness will be dynamically adjustable in the future
- // But for now, change it here.
- lcd_backlight_brightness(130);
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- initial_update = true;
- start_keyframe_animation(&default_startup_animation);
-}
-
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state);
-
-void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
- // Add more tests, change the colors and layer texts here
- // Usually you want to check the high bits (higher layers first)
- // because that's the order layers are processed for keypresses
- // You can for check for example:
- // state->status.layer
- // state->status.default_layer
- // state->status.leds (see led.h for available statuses)
-
- uint32_t prev_color = state->target_lcd_color;
- const char* prev_layer_text = state->layer_text;
-
- get_visualizer_layer_and_color(state);
-
- if (initial_update || prev_color != state->target_lcd_color) {
- start_keyframe_animation(&color_animation);
- }
-
- if (initial_update || prev_layer_text != state->layer_text) {
- start_keyframe_animation(&lcd_layer_display);
- }
- // You can also stop existing animations, and start your custom ones here
- // remember that you should normally have only one animation for the LCD
- // and one for the background. But you can also combine them if you want.
-}
-
-void user_visualizer_suspend(visualizer_state_t* state) {
- state->layer_text = "Suspending...";
- uint8_t hue = LCD_HUE(state->current_lcd_color);
- uint8_t sat = LCD_SAT(state->current_lcd_color);
- state->target_lcd_color = LCD_COLOR(hue, sat, 0);
- start_keyframe_animation(&default_suspend_animation);
-}
-
-void user_visualizer_resume(visualizer_state_t* state) {
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- initial_update = true;
- start_keyframe_animation(&default_startup_animation);
-}
-
-#endif /* KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_ */
diff --git a/keyboards/ergodox_infinity/visualizer.c b/keyboards/ergodox_infinity/visualizer.c
deleted file mode 100644
index 1ea891e8303..00000000000
--- a/keyboards/ergodox_infinity/visualizer.c
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
-Copyright 2016 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 .
-*/
-
-// Currently we are assuming that both the backlight and LCD are enabled
-// But it's entirely possible to write a custom visualizer that use only
-// one of them
-#ifndef LCD_BACKLIGHT_ENABLE
-#error This visualizer needs that LCD backlight is enabled
-#endif
-
-#ifndef LCD_ENABLE
-#error This visualizer needs that LCD is enabled
-#endif
-
-#include "visualizer.h"
-#include "visualizer_keyframes.h"
-#include "lcd_keyframes.h"
-#include "lcd_backlight_keyframes.h"
-#include "default_animations.h"
-
-static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF);
-static const uint32_t initial_color = LCD_COLOR(0, 0, 0);
-
-static const uint32_t led_emulation_colors[4] = {
- LCD_COLOR(0, 0, 0),
- LCD_COLOR(255, 255, 255),
- LCD_COLOR(84, 255, 255),
- LCD_COLOR(168, 255, 255),
-};
-
-static uint32_t next_led_target_color = 0;
-
-typedef enum {
- LCD_STATE_INITIAL,
- LCD_STATE_LAYER_BITMAP,
- LCD_STATE_BITMAP_AND_LEDS,
-} lcd_state_t;
-
-static lcd_state_t lcd_state = LCD_STATE_INITIAL;
-
-typedef struct {
- uint8_t led_on;
- uint8_t led1;
- uint8_t led2;
- uint8_t led3;
-} visualizer_user_data_t;
-
-// Don't access from visualization function, use the visualizer state instead
-static visualizer_user_data_t user_data_keyboard = {
- .led_on = 0,
- .led1 = LED_BRIGHTNESS_HI,
- .led2 = LED_BRIGHTNESS_HI,
- .led3 = LED_BRIGHTNESS_HI,
-};
-
-_Static_assert(sizeof(visualizer_user_data_t) <= VISUALIZER_USER_DATA_SIZE,
- "Please increase the VISUALIZER_USER_DATA_SIZE");
-
-// Feel free to modify the animations below, or even add new ones if needed
-
-
-// The color animation animates the LCD color when you change layers
-static keyframe_animation_t one_led_color = {
- .num_frames = 1,
- .loop = false,
- .frame_lengths = {gfxMillisecondsToTicks(0)},
- .frame_functions = {lcd_backlight_keyframe_set_color},
-};
-
-bool swap_led_target_color(keyframe_animation_t* animation, visualizer_state_t* state) {
- uint32_t temp = next_led_target_color;
- next_led_target_color = state->target_lcd_color;
- state->target_lcd_color = temp;
- return false;
-}
-
-// The color animation animates the LCD color when you change layers
-static keyframe_animation_t two_led_colors = {
- .num_frames = 2,
- .loop = true,
- .frame_lengths = {gfxMillisecondsToTicks(1000), gfxMillisecondsToTicks(0)},
- .frame_functions = {lcd_backlight_keyframe_set_color, swap_led_target_color},
-};
-
-// The LCD animation alternates between the layer name display and a
-// bitmap that displays all active layers
-static keyframe_animation_t lcd_bitmap_animation = {
- .num_frames = 1,
- .loop = false,
- .frame_lengths = {gfxMillisecondsToTicks(0)},
- .frame_functions = {lcd_keyframe_display_layer_bitmap},
-};
-
-static keyframe_animation_t lcd_bitmap_leds_animation = {
- .num_frames = 2,
- .loop = true,
- .frame_lengths = {gfxMillisecondsToTicks(2000), gfxMillisecondsToTicks(2000)},
- .frame_functions = {lcd_keyframe_display_layer_bitmap, lcd_keyframe_display_led_states},
-};
-
-void initialize_user_visualizer(visualizer_state_t* state) {
- // The brightness will be dynamically adjustable in the future
- // But for now, change it here.
- lcd_backlight_brightness(130);
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- lcd_state = LCD_STATE_INITIAL;
- start_keyframe_animation(&default_startup_animation);
-}
-
-static inline bool is_led_on(visualizer_user_data_t* user_data, uint8_t num) {
- return user_data->led_on & (1u << num);
-}
-
-static uint8_t get_led_index_master(visualizer_user_data_t* user_data) {
- for (int i=0; i < 3; i++) {
- if (is_led_on(user_data, i)) {
- return i + 1;
- }
- }
- return 0;
-}
-
-static uint8_t get_led_index_slave(visualizer_user_data_t* user_data) {
- uint8_t master_index = get_led_index_master(user_data);
- if (master_index!=0) {
- for (int i=master_index; i < 3; i++) {
- if (is_led_on(user_data, i)) {
- return i + 1;
- }
- }
- }
-
- return 0;
-}
-
-static uint8_t get_secondary_led_index(visualizer_user_data_t* user_data) {
- if (is_led_on(user_data, 0) &&
- is_led_on(user_data, 1) &&
- is_led_on(user_data, 2)) {
- return 3;
- }
- return 0;
-}
-
-static uint8_t get_brightness(visualizer_user_data_t* user_data, uint8_t index) {
- switch (index) {
- case 1:
- return user_data->led1;
- case 2:
- return user_data->led2;
- case 3:
- return user_data->led3;
- }
- return 0;
-}
-
-static void update_emulated_leds(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
- visualizer_user_data_t* user_data_new = (visualizer_user_data_t*)state->status.user_data;
- visualizer_user_data_t* user_data_old = (visualizer_user_data_t*)prev_status->user_data;
-
- uint8_t new_index;
- uint8_t old_index;
-
- if (is_keyboard_master()) {
- new_index = get_led_index_master(user_data_new);
- old_index = get_led_index_master(user_data_old);
- }
- else {
- new_index = get_led_index_slave(user_data_new);
- old_index = get_led_index_slave(user_data_old);
- }
- uint8_t new_secondary_index = get_secondary_led_index(user_data_new);
- uint8_t old_secondary_index = get_secondary_led_index(user_data_old);
-
- uint8_t old_brightness = get_brightness(user_data_old, old_index);
- uint8_t new_brightness = get_brightness(user_data_new, new_index);
-
- uint8_t old_secondary_brightness = get_brightness(user_data_old, old_secondary_index);
- uint8_t new_secondary_brightness = get_brightness(user_data_new, new_secondary_index);
-
- if (lcd_state == LCD_STATE_INITIAL ||
- new_index != old_index ||
- new_secondary_index != old_secondary_index ||
- new_brightness != old_brightness ||
- new_secondary_brightness != old_secondary_brightness) {
-
- if (new_secondary_index != 0) {
- state->target_lcd_color = change_lcd_color_intensity(
- led_emulation_colors[new_index], new_brightness);
- next_led_target_color = change_lcd_color_intensity(
- led_emulation_colors[new_secondary_index], new_secondary_brightness);
-
- stop_keyframe_animation(&one_led_color);
- start_keyframe_animation(&two_led_colors);
- } else {
- state->target_lcd_color = change_lcd_color_intensity(
- led_emulation_colors[new_index], new_brightness);
- stop_keyframe_animation(&two_led_colors);
- start_keyframe_animation(&one_led_color);
- }
- }
-}
-
-static void update_lcd_text(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
- if (state->status.leds) {
- if (lcd_state != LCD_STATE_BITMAP_AND_LEDS ||
- state->status.leds != prev_status->leds ||
- state->status.layer != prev_status->layer ||
- state->status.default_layer != prev_status->default_layer) {
-
- // NOTE: that it doesn't matter if the animation isn't playing, stop will do nothing in that case
- stop_keyframe_animation(&lcd_bitmap_animation);
-
- lcd_state = LCD_STATE_BITMAP_AND_LEDS;
- // For information:
- // The logic in this function makes sure that this doesn't happen, but if you call start on an
- // animation that is already playing it will be restarted.
- start_keyframe_animation(&lcd_bitmap_leds_animation);
- }
- } else {
- if (lcd_state != LCD_STATE_LAYER_BITMAP ||
- state->status.layer != prev_status->layer ||
- state->status.default_layer != prev_status->default_layer) {
-
- stop_keyframe_animation(&lcd_bitmap_leds_animation);
-
- lcd_state = LCD_STATE_LAYER_BITMAP;
- start_keyframe_animation(&lcd_bitmap_animation);
- }
- }
-}
-
-void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
- // Check the status here to start and stop animations
- // You might have to save some state, like the current animation here so that you can start the right
- // This function is called every time the status changes
-
- // NOTE that this is called from the visualizer thread, so don't access anything else outside the status
- // This is also important because the slave won't have access to the active layer for example outside the
- // status.
-
- update_emulated_leds(state, prev_status);
- update_lcd_text(state, prev_status);
-
-}
-
-void user_visualizer_suspend(visualizer_state_t* state) {
- state->layer_text = "Suspending...";
- uint8_t hue = LCD_HUE(state->current_lcd_color);
- uint8_t sat = LCD_SAT(state->current_lcd_color);
- state->target_lcd_color = LCD_COLOR(hue, sat, 0);
- start_keyframe_animation(&default_suspend_animation);
-}
-
-void user_visualizer_resume(visualizer_state_t* state) {
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- lcd_state = LCD_STATE_INITIAL;
- start_keyframe_animation(&default_startup_animation);
-}
-
-void ergodox_board_led_on(void){
- // No board led support
-}
-
-void ergodox_right_led_1_on(void){
- user_data_keyboard.led_on |= (1u << 0);
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_2_on(void){
- user_data_keyboard.led_on |= (1u << 1);
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_3_on(void){
- user_data_keyboard.led_on |= (1u << 2);
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_board_led_off(void){
- // No board led support
-}
-
-void ergodox_right_led_1_off(void){
- user_data_keyboard.led_on &= ~(1u << 0);
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_2_off(void){
- user_data_keyboard.led_on &= ~(1u << 1);
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_3_off(void){
- user_data_keyboard.led_on &= ~(1u << 2);
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_1_set(uint8_t n) {
- user_data_keyboard.led1 = n;
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_2_set(uint8_t n) {
- user_data_keyboard.led2 = n;
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_3_set(uint8_t n) {
- user_data_keyboard.led3 = n;
- visualizer_set_user_data(&user_data_keyboard);
-}
diff --git a/keyboards/ergosaurus/rules.mk b/keyboards/ergosaurus/rules.mk
index 93b442460f1..07a7efce74b 100644
--- a/keyboards/ergosaurus/rules.mk
+++ b/keyboards/ergosaurus/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/ergotaco/post_rules.mk b/keyboards/ergotaco/post_rules.mk
new file mode 100644
index 00000000000..0db3171b33d
--- /dev/null
+++ b/keyboards/ergotaco/post_rules.mk
@@ -0,0 +1,8 @@
+
+# A bunch of stuff that you shouldn't touch unless you
+# know what you're doing.
+#
+# No touchy, capiche?
+ifeq ($(strip $(DEBUG_MATRIX)), yes)
+ OPT_DEFS += -DDEBUG_MATRIX
+endif
diff --git a/keyboards/ergotaco/rules.mk b/keyboards/ergotaco/rules.mk
index 9fe0992ffd5..db236477b0f 100644
--- a/keyboards/ergotaco/rules.mk
+++ b/keyboards/ergotaco/rules.mk
@@ -14,6 +14,3 @@ COMMAND_ENABLE = yes
#
# No touchy, capiche?
SRC += matrix.c i2c_master.c
-ifeq ($(strip $(DEBUG_MATRIX)), yes)
- OPT_DEFS += -DDEBUG_MATRIX
-endif
diff --git a/keyboards/ergotravel/keymaps/yanfali/rules.mk b/keyboards/ergotravel/keymaps/yanfali/rules.mk
index 16409396a13..ab3621cd7ed 100644
--- a/keyboards/ergotravel/keymaps/yanfali/rules.mk
+++ b/keyboards/ergotravel/keymaps/yanfali/rules.mk
@@ -1,6 +1,6 @@
BOOTLOADER = qmk-dfu
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
diff --git a/keyboards/ergotravel/rev1/rev1.h b/keyboards/ergotravel/rev1/rev1.h
index 5907617ef32..2973f4d9f3b 100644
--- a/keyboards/ergotravel/rev1/rev1.h
+++ b/keyboards/ergotravel/rev1/rev1.h
@@ -1,5 +1,4 @@
-#ifndef REV1_H
-#define REV1_H
+#pragma once
#include "ergotravel.h"
@@ -13,21 +12,20 @@
#endif
#endif
+#define XXX KC_NO
+
#define LAYOUT( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
- L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
- ) \
- { \
- { 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, KC_NO }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R35, R34, R33, R32, R31, R30, KC_NO } \
- }
-
-#endif
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
+) { \
+ { 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 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R35, R34, R33, R32, R31, R30, XXX } \
+}
diff --git a/keyboards/ericrlau/numdiscipline/rev1/rules.mk b/keyboards/ericrlau/numdiscipline/rev1/rules.mk
index 49a15005c4a..c1b6074978e 100644
--- a/keyboards/ericrlau/numdiscipline/rev1/rules.mk
+++ b/keyboards/ericrlau/numdiscipline/rev1/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = usbasploader
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/esca/getawayvan/rules.mk b/keyboards/esca/getawayvan/rules.mk
index 2544bca287b..a7596be365a 100644
--- a/keyboards/esca/getawayvan/rules.mk
+++ b/keyboards/esca/getawayvan/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/espectro/rules.mk b/keyboards/espectro/rules.mk
index b1ba21f36ee..42b4288ff10 100755
--- a/keyboards/espectro/rules.mk
+++ b/keyboards/espectro/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/evil80/evil80.h b/keyboards/evil80/evil80.h
index a880de98f5f..90d4f6564b8 100644
--- a/keyboards/evil80/evil80.h
+++ b/keyboards/evil80/evil80.h
@@ -1,23 +1,21 @@
-#ifndef EVIL80_H
-#define EVIL80_H
+#pragma once
#include "quantum.h"
-#define LAYOUT( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
- K500, K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
- K501, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
- K502, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \
- K503, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K414, \
- K504, K505, K506, K507, K509, K510, K511, K512, K513, K514, K515 \
-) \
-{ \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, KC_NO, KC_NO }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO, K414, KC_NO }, \
- { K500, K501, K502, K503, K504, K505, K506, K507, KC_NO, K509, K510, K511, K512, K513, K514, K515 } \
-}
+#define XXX KC_NO
-#endif
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k50, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k51, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
+ k52, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, \
+ k53, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4E, \
+ k54, k55, k56, k57, k59, k5A, k5B, k5C, k5D, k5E, k5F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, XXX, XXX, XXX }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, XXX, k4E, XXX }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, XXX, k59, k5A, k5B, k5C, k5D, k5E, k5F } \
+}
diff --git a/keyboards/evolv/rules.mk b/keyboards/evolv/rules.mk
index b0f7124c08e..35f3cc75ee8 100644
--- a/keyboards/evolv/rules.mk
+++ b/keyboards/evolv/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/evyd13/atom47/rev3/info.json b/keyboards/evyd13/atom47/rev3/info.json
index 0deaa7103c4..fc602f699b6 100644
--- a/keyboards/evyd13/atom47/rev3/info.json
+++ b/keyboards/evyd13/atom47/rev3/info.json
@@ -99,10 +99,11 @@
{"x":10.75, "y":2, "w":1.25},
{"x":12, "y":2},
- {"x":0, "y":3, "w":1.25},
- {"x":1.25, "y":3, "w":1.25},
- {"x":2.5, "y":3, "w":1.25},
- {"x":3.75, "y":3, "w":6.25},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3, "y":3, "w":6},
+ {"x":9, "y":3},
{"x":10, "y":3},
{"x":11, "y":3},
{"x":12, "y":3}
diff --git a/keyboards/evyd13/atom47/rev4/info.json b/keyboards/evyd13/atom47/rev4/info.json
index a48b413588f..d0fbf98742e 100644
--- a/keyboards/evyd13/atom47/rev4/info.json
+++ b/keyboards/evyd13/atom47/rev4/info.json
@@ -99,10 +99,11 @@
{"x":10.75, "y":2, "w":1.25},
{"x":12, "y":2},
- {"x":0, "y":3, "w":1.25},
- {"x":1.25, "y":3, "w":1.25},
- {"x":2.5, "y":3, "w":1.25},
- {"x":3.75, "y":3, "w":6.25},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3, "y":3, "w":6},
+ {"x":9, "y":3},
{"x":10, "y":3},
{"x":11, "y":3},
{"x":12, "y":3}
diff --git a/keyboards/evyd13/atom47/rev5/config.h b/keyboards/evyd13/atom47/rev5/config.h
index f1f8eacfa47..383aa23789f 100644
--- a/keyboards/evyd13/atom47/rev5/config.h
+++ b/keyboards/evyd13/atom47/rev5/config.h
@@ -157,8 +157,54 @@ along with this program. If not, see .
// ADDR2 represents A3:A2 of the 7-bit address.
// The result is: 0b101(ADDR2)(ADDR1)
#define DRIVER_ADDR_1 0b1010000
-#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-
-#define DRIVER_COUNT 2
-#define DRIVER_1_LED_TOTAL 64
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
\ No newline at end of file
+#define DRIVER_COUNT 1
+#define DRIVER_LED_TOTAL 64
+
+// 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
diff --git a/keyboards/evyd13/atom47/rev5/rev5.c b/keyboards/evyd13/atom47/rev5/rev5.c
index ea0208706a3..f972b78867c 100644
--- a/keyboards/evyd13/atom47/rev5/rev5.c
+++ b/keyboards/evyd13/atom47/rev5/rev5.c
@@ -17,7 +17,7 @@ along with this program. If not, see .
#include "rev5.h"
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/evyd13/atom47/rules.mk b/keyboards/evyd13/atom47/rules.mk
index b966d1829f4..2ed1993fbcc 100644
--- a/keyboards/evyd13/atom47/rules.mk
+++ b/keyboards/evyd13/atom47/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/evyd13/eon40/rules.mk b/keyboards/evyd13/eon40/rules.mk
index c2981962d1a..fc923217023 100644
--- a/keyboards/evyd13/eon40/rules.mk
+++ b/keyboards/evyd13/eon40/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/evyd13/eon65/rules.mk b/keyboards/evyd13/eon65/rules.mk
index 15164058d77..9cf47b43a7c 100644
--- a/keyboards/evyd13/eon65/rules.mk
+++ b/keyboards/evyd13/eon65/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/evyd13/eon75/rules.mk b/keyboards/evyd13/eon75/rules.mk
index 7a72e82b354..6d598770a31 100644
--- a/keyboards/evyd13/eon75/rules.mk
+++ b/keyboards/evyd13/eon75/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/evyd13/eon87/rules.mk b/keyboards/evyd13/eon87/rules.mk
index 2f8686632b6..6ead804b7ba 100644
--- a/keyboards/evyd13/eon87/rules.mk
+++ b/keyboards/evyd13/eon87/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/evyd13/eon95/rules.mk b/keyboards/evyd13/eon95/rules.mk
index 7a72e82b354..6d598770a31 100644
--- a/keyboards/evyd13/eon95/rules.mk
+++ b/keyboards/evyd13/eon95/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/evyd13/gh80_1800/rules.mk b/keyboards/evyd13/gh80_1800/rules.mk
index a67e252c7a1..d9f2b4f15b9 100644
--- a/keyboards/evyd13/gh80_1800/rules.mk
+++ b/keyboards/evyd13/gh80_1800/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/evyd13/gh80_3700/keymaps/ps2/config.h b/keyboards/evyd13/gh80_3700/keymaps/ps2/config.h
index 44ac7dcd034..b77ac95d7d4 100644
--- a/keyboards/evyd13/gh80_3700/keymaps/ps2/config.h
+++ b/keyboards/evyd13/gh80_3700/keymaps/ps2/config.h
@@ -17,14 +17,8 @@
#pragma once
#ifdef PS2_USE_USART
-#define PS2_CLOCK_PORT PORTD
-#define PS2_CLOCK_PIN PIND
-#define PS2_CLOCK_DDR DDRD
-#define PS2_CLOCK_BIT 5
-#define PS2_DATA_PORT PORTD
-#define PS2_DATA_PIN PIND
-#define PS2_DATA_DDR DDRD
-#define PS2_DATA_BIT 2
+#define PS2_CLOCK_PIN D5
+#define PS2_DATA_PIN D2
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
/* set DDR of CLOCK as input to be slave */
diff --git a/keyboards/evyd13/gh80_3700/rules.mk b/keyboards/evyd13/gh80_3700/rules.mk
index 3affc70d0cf..fdf9908627c 100644
--- a/keyboards/evyd13/gh80_3700/rules.mk
+++ b/keyboards/evyd13/gh80_3700/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/evyd13/gud70/rules.mk b/keyboards/evyd13/gud70/rules.mk
index 7237e7dc1d3..2ff67b27216 100644
--- a/keyboards/evyd13/gud70/rules.mk
+++ b/keyboards/evyd13/gud70/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/evyd13/nt660/rules.mk b/keyboards/evyd13/nt660/rules.mk
index 93860bde0d7..2b211132c28 100644
--- a/keyboards/evyd13/nt660/rules.mk
+++ b/keyboards/evyd13/nt660/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/evyd13/nt750/rules.mk b/keyboards/evyd13/nt750/rules.mk
index e690f191b68..d0729e22b11 100644
--- a/keyboards/evyd13/nt750/rules.mk
+++ b/keyboards/evyd13/nt750/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/evyd13/nt980/rules.mk b/keyboards/evyd13/nt980/rules.mk
index c79f74e34b9..9906266f482 100644
--- a/keyboards/evyd13/nt980/rules.mk
+++ b/keyboards/evyd13/nt980/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/evyd13/omrontkl/rules.mk b/keyboards/evyd13/omrontkl/rules.mk
index 37ab0dee279..dcb857f2c6d 100644
--- a/keyboards/evyd13/omrontkl/rules.mk
+++ b/keyboards/evyd13/omrontkl/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/evyd13/plain60/keymaps/kwerdenker/rules.mk b/keyboards/evyd13/plain60/keymaps/kwerdenker/rules.mk
index 0b304aae350..62eb851505f 100644
--- a/keyboards/evyd13/plain60/keymaps/kwerdenker/rules.mk
+++ b/keyboards/evyd13/plain60/keymaps/kwerdenker/rules.mk
@@ -16,7 +16,7 @@
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality (+4870)
diff --git a/keyboards/evyd13/plain60/rules.mk b/keyboards/evyd13/plain60/rules.mk
index d6237b3262f..b7f94e84e6c 100644
--- a/keyboards/evyd13/plain60/rules.mk
+++ b/keyboards/evyd13/plain60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/evyd13/pockettype/rules.mk b/keyboards/evyd13/pockettype/rules.mk
index fc85b1aab0e..df0efd3c43d 100644
--- a/keyboards/evyd13/pockettype/rules.mk
+++ b/keyboards/evyd13/pockettype/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/evyd13/quackfire/rules.mk b/keyboards/evyd13/quackfire/rules.mk
index 13de0f45de8..7593cc0a3b9 100644
--- a/keyboards/evyd13/quackfire/rules.mk
+++ b/keyboards/evyd13/quackfire/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/evyd13/solheim68/rules.mk b/keyboards/evyd13/solheim68/rules.mk
index f2e5379ac15..3105d59b775 100644
--- a/keyboards/evyd13/solheim68/rules.mk
+++ b/keyboards/evyd13/solheim68/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/evyd13/ta65/rules.mk b/keyboards/evyd13/ta65/rules.mk
index a8c0ec30f59..bf3ad7e1324 100644
--- a/keyboards/evyd13/ta65/rules.mk
+++ b/keyboards/evyd13/ta65/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/evyd13/wasdat/keymaps/konstantin/rules.mk b/keyboards/evyd13/wasdat/keymaps/konstantin/rules.mk
index f73ad286a1f..e5fc55e912a 100644
--- a/keyboards/evyd13/wasdat/keymaps/konstantin/rules.mk
+++ b/keyboards/evyd13/wasdat/keymaps/konstantin/rules.mk
@@ -1,5 +1,5 @@
# Generic features
-BOOTMAGIC_ENABLE = yes
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
COMMAND_ENABLE = yes
CONSOLE_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/evyd13/wasdat/rules.mk b/keyboards/evyd13/wasdat/rules.mk
index 897c216a203..dfd38a5122d 100644
--- a/keyboards/evyd13/wasdat/rules.mk
+++ b/keyboards/evyd13/wasdat/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/evyd13/wasdat_code/rules.mk b/keyboards/evyd13/wasdat_code/rules.mk
index 636e48b5ffa..5c989a49398 100644
--- a/keyboards/evyd13/wasdat_code/rules.mk
+++ b/keyboards/evyd13/wasdat_code/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/evyd13/wonderland/rules.mk b/keyboards/evyd13/wonderland/rules.mk
index a8f3fcc106b..efea8c1740f 100644
--- a/keyboards/evyd13/wonderland/rules.mk
+++ b/keyboards/evyd13/wonderland/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/exclusive/e65/rules.mk b/keyboards/exclusive/e65/rules.mk
index a69fbc29724..aaa3b1129b5 100644
--- a/keyboards/exclusive/e65/rules.mk
+++ b/keyboards/exclusive/e65/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/exclusive/e6_rgb/config.h b/keyboards/exclusive/e6_rgb/config.h
index b1b8b1bed71..fd221f1765d 100644
--- a/keyboards/exclusive/e6_rgb/config.h
+++ b/keyboards/exclusive/e6_rgb/config.h
@@ -31,8 +31,6 @@
#define RGBLIGHT_VAL_STEP 8
#define DRIVER_ADDR_1 0b1010000
-#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-#define DRIVER_COUNT 2
-#define DRIVER_1_LED_TOTAL 63
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_COUNT 1
+#define DRIVER_LED_TOTAL 63
diff --git a/keyboards/exclusive/e6_rgb/e6_rgb.c b/keyboards/exclusive/e6_rgb/e6_rgb.c
index e0d313f835c..11d313e9a3b 100644
--- a/keyboards/exclusive/e6_rgb/e6_rgb.c
+++ b/keyboards/exclusive/e6_rgb/e6_rgb.c
@@ -11,7 +11,7 @@ void matrix_init_kb(void) {
matrix_init_user();
}
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/exclusive/e6_rgb/rules.mk b/keyboards/exclusive/e6_rgb/rules.mk
index e895602722f..46f86ec2fed 100644
--- a/keyboards/exclusive/e6_rgb/rules.mk
+++ b/keyboards/exclusive/e6_rgb/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/exclusive/e6v2/le/config.h b/keyboards/exclusive/e6v2/le/config.h
index 8fc91e504cb..f9295145ec9 100644
--- a/keyboards/exclusive/e6v2/le/config.h
+++ b/keyboards/exclusive/e6v2/le/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -57,5 +56,3 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-
-#endif
diff --git a/keyboards/exclusive/e6v2/le/le.h b/keyboards/exclusive/e6v2/le/le.h
index d52560dfbe8..41992a185e8 100644
--- a/keyboards/exclusive/e6v2/le/le.h
+++ b/keyboards/exclusive/e6v2/le/le.h
@@ -1,36 +1,35 @@
-#ifndef LE_H
-#define LE_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0D, \
- K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K42, K43, K44, K47, K49, K4A, K4B, K4C, K4D, K4E \
-)\
-{\
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
- { K40, KC_NO, K42, K43, K44, KC_NO, KC_NO, K47, KC_NO, K49, K4A, K4B, K4C, K4D, K4E }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k0D, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k42, k43, k44, k47, k49, k4A, k4B, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, XXX, k42, k43, k44, XXX, XXX, k47, XXX, k49, k4A, k4B, k4C, k4D, k4E } \
}
#define LAYOUT_60_ansi( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
- K40, K42, K43, K47, K4A, K4B, K4D, K4E \
-)\
-{\
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
- { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO }, \
- { K40, KC_NO, K42, K43, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \
+ k40, k42, k43, k47, k4A, k4B, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, XXX }, \
+ { k40, XXX, k42, k43, XXX, XXX, XXX, k47, XXX, XXX, k4A, k4B, XXX, k4D, k4E } \
}
/* LAYOUT_60_hhkb
@@ -47,18 +46,15 @@
* └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
*/
#define LAYOUT_60_hhkb( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0D, \
- K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \
- K42, K43, K47, K4B, K4D \
-)\
-{\
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E }, \
- { KC_NO, KC_NO, K42, K43, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, KC_NO, K4B, KC_NO, K4D, KC_NO }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k0D, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, \
+ k42, k43, k47, k4B, k4D \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, XXX, k3E }, \
+ { XXX, XXX, k42, k43, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4B, XXX, k4D, XXX } \
}
-
-#endif
diff --git a/keyboards/exclusive/e6v2/oe/config.h b/keyboards/exclusive/e6v2/oe/config.h
index 13be6ccad62..d9362cfc030 100644
--- a/keyboards/exclusive/e6v2/oe/config.h
+++ b/keyboards/exclusive/e6v2/oe/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -54,5 +53,3 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-
-#endif
diff --git a/keyboards/exclusive/e6v2/oe/oe.h b/keyboards/exclusive/e6v2/oe/oe.h
index 0746039fe72..21daaa2aa9b 100644
--- a/keyboards/exclusive/e6v2/oe/oe.h
+++ b/keyboards/exclusive/e6v2/oe/oe.h
@@ -1,66 +1,61 @@
-#ifndef OE_H
-#define OE_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
- K40, K41, K42, K46, K4A, K4B, K4C, K4D \
-)\
-{\
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO }, \
- { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, KC_NO }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, k4C, k4D, XXX } \
}
#define LAYOUT_60_ansi( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
- K40, K41, K42, K46, K4A, K4B, K4C, K4D \
-)\
-{\
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, KC_NO }, \
- { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, KC_NO }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, XXX, XXX }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, k4C, k4D, XXX } \
}
#define LAYOUT_hhkb( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
- K41, K42, K46, K4B, K4C \
-)\
-{\
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO }, \
- { KC_NO, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, KC_NO, K4B, K4C, KC_NO, KC_NO }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k41, k42, k46, k4B, k4C \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX }, \
+ { XXX, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4B, k4C, XXX, XXX } \
}
#define LAYOUT_hhkb_splits( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
- K41, K42, K46, K4B, K4C \
-)\
-{\
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO }, \
- { KC_NO, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, KC_NO, K4B, K4C, KC_NO, KC_NO }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k41, k42, k46, k4B, k4C \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX }, \
+ { XXX, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4B, k4C, XXX, XXX } \
}
-
-#endif
diff --git a/keyboards/exclusive/e7v1/rules.mk b/keyboards/exclusive/e7v1/rules.mk
index de98c362417..aea6e25e215 100644
--- a/keyboards/exclusive/e7v1/rules.mk
+++ b/keyboards/exclusive/e7v1/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/exclusive/e7v1se/rules.mk b/keyboards/exclusive/e7v1se/rules.mk
index dff8d21f97b..c8629bd704b 100644
--- a/keyboards/exclusive/e7v1se/rules.mk
+++ b/keyboards/exclusive/e7v1se/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/exclusive/e85/rules.mk b/keyboards/exclusive/e85/rules.mk
index 6b890e9dd93..f3856b93f0b 100644
--- a/keyboards/exclusive/e85/rules.mk
+++ b/keyboards/exclusive/e85/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/eyeohdesigns/sprh/info.json b/keyboards/eyeohdesigns/sprh/info.json
index ed055586142..7c99615965f 100644
--- a/keyboards/eyeohdesigns/sprh/info.json
+++ b/keyboards/eyeohdesigns/sprh/info.json
@@ -1,13 +1,148 @@
{
- "keyboard_name": "sprh",
- "url": "",
- "maintainer": "eye oh designs",
+ "keyboard_name": "sprh",
+ "maintainer": "eye oh designs",
+ "url": "",
"layouts": {
- "LAYOUT_default": {
- "layout": [{"label":"Encd", "x":0.5, "y":0}, {"label":"Esc", "x":1.5, "y":0}, {"label":"1", "x":2.5, "y":0}, {"label":"2", "x":3.5, "y":0}, {"label":"3", "x":4.5, "y":0}, {"label":"4", "x":5.5, "y":0}, {"label":"5", "x":6.5, "y":0}, {"label":"6", "x":7.5, "y":0}, {"label":"7", "x":8.5, "y":0}, {"label":"8", "x":9.5, "y":0}, {"label":"9", "x":10.5, "y":0}, {"label":"0", "x":11.5, "y":0}, {"label":"_", "x":12.5, "y":0}, {"label":"+", "x":13.5, "y":0}, {"label":"Backspace", "x":14.5, "y":0, "w":2}, {"label":"Tab", "x":1, "y":1, "w":1.5}, {"label":"Q", "x":2.5, "y":1}, {"label":"W", "x":3.5, "y":1}, {"label":"E", "x":4.5, "y":1}, {"label":"R", "x":5.5, "y":1}, {"label":"T", "x":6.5, "y":1}, {"label":"Y", "x":7.5, "y":1}, {"label":"U", "x":8.5, "y":1}, {"label":"I", "x":9.5, "y":1}, {"label":"O", "x":10.5, "y":1}, {"label":"P", "x":11.5, "y":1}, {"label":"[", "x":12.5, "y":1}, {"label":"]", "x":13.5, "y":1}, {"label":"\\", "x":14.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0.75, "y":2, "w":1.75}, {"label":"A", "x":2.5, "y":2}, {"label":"S", "x":3.5, "y":2}, {"label":"D", "x":4.5, "y":2}, {"label":"F", "x":5.5, "y":2}, {"label":"G", "x":6.5, "y":2}, {"label":"H", "x":7.5, "y":2}, {"label":"J", "x":8.5, "y":2}, {"label":"K", "x":9.5, "y":2}, {"label":"L", "x":10.5, "y":2}, {"label":";", "x":11.5, "y":2}, {"label":"'", "x":12.5, "y":2}, {"label":"Enter", "x":13.5, "y":2, "w":2.25}, {"label":"Shift", "x":0.25, "y":3, "w":2.25}, {"label":"Z", "x":2.5, "y":3}, {"label":"X", "x":3.5, "y":3}, {"label":"C", "x":4.5, "y":3}, {"label":"V", "x":5.5, "y":3}, {"label":"B", "x":6.5, "y":3}, {"label":"N", "x":7.5, "y":3}, {"label":"M", "x":8.5, "y":3}, {"label":",", "x":9.5, "y":3}, {"label":".", "x":10.5, "y":3}, {"label":"/", "x":11.5, "y":3}, {"label":"Shift", "x":12.5, "y":3, "w":2.75}, {"label":"\u2191", "x":15.25, "y":3}, {"label":"Super", "x":0, "y":4, "w":1.25}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":3.37, "y":4, "w":1.25}, {"x":4.62, "y":4, "w":6.25}, {"label":"Alt", "x":10.87, "y":4, "w":1.25}, {"label":"Function", "x":12.12, "y":4, "w":1.25}, {"label":"\u2190", "x":14.25, "y":4}, {"label":"\u2193", "x":15.25, "y":4}, {"label":"\u2192", "x":16.25, "y":4}]
+ "LAYOUT_default": {
+ "layout": [
+ { "label": "Encd", "x": 0.5, "y": 0 },
+ { "label": "Esc", "x": 1.5, "y": 0 },
+ { "label": "1", "x": 2.5, "y": 0 },
+ { "label": "2", "x": 3.5, "y": 0 },
+ { "label": "3", "x": 4.5, "y": 0 },
+ { "label": "4", "x": 5.5, "y": 0 },
+ { "label": "5", "x": 6.5, "y": 0 },
+ { "label": "6", "x": 7.5, "y": 0 },
+ { "label": "7", "x": 8.5, "y": 0 },
+ { "label": "8", "x": 9.5, "y": 0 },
+ { "label": "9", "x": 10.5, "y": 0 },
+ { "label": "0", "x": 11.5, "y": 0 },
+ { "label": "_", "x": 12.5, "y": 0 },
+ { "label": "+", "x": 13.5, "y": 0 },
+ { "label": "Backspace", "w": 2, "x": 14.5, "y": 0 },
+ { "label": "Tab", "w": 1.5, "x": 1, "y": 1 },
+ { "label": "Q", "x": 2.5, "y": 1 },
+ { "label": "W", "x": 3.5, "y": 1 },
+ { "label": "E", "x": 4.5, "y": 1 },
+ { "label": "R", "x": 5.5, "y": 1 },
+ { "label": "T", "x": 6.5, "y": 1 },
+ { "label": "Y", "x": 7.5, "y": 1 },
+ { "label": "U", "x": 8.5, "y": 1 },
+ { "label": "I", "x": 9.5, "y": 1 },
+ { "label": "O", "x": 10.5, "y": 1 },
+ { "label": "P", "x": 11.5, "y": 1 },
+ { "label": "[", "x": 12.5, "y": 1 },
+ { "label": "]", "x": 13.5, "y": 1 },
+ { "label": "\\", "w": 1.5, "x": 14.5, "y": 1 },
+ { "label": "Caps Lock", "w": 1.75, "x": 0.75, "y": 2 },
+ { "label": "A", "x": 2.5, "y": 2 },
+ { "label": "S", "x": 3.5, "y": 2 },
+ { "label": "D", "x": 4.5, "y": 2 },
+ { "label": "F", "x": 5.5, "y": 2 },
+ { "label": "G", "x": 6.5, "y": 2 },
+ { "label": "H", "x": 7.5, "y": 2 },
+ { "label": "J", "x": 8.5, "y": 2 },
+ { "label": "K", "x": 9.5, "y": 2 },
+ { "label": "L", "x": 10.5, "y": 2 },
+ { "label": ";", "x": 11.5, "y": 2 },
+ { "label": "'", "x": 12.5, "y": 2 },
+ { "label": "Enter", "w": 2.25, "x": 13.5, "y": 2 },
+ { "label": "Shift", "w": 2.25, "x": 0.25, "y": 3 },
+ { "label": "Z", "x": 2.5, "y": 3 },
+ { "label": "X", "x": 3.5, "y": 3 },
+ { "label": "C", "x": 4.5, "y": 3 },
+ { "label": "V", "x": 5.5, "y": 3 },
+ { "label": "B", "x": 6.5, "y": 3 },
+ { "label": "N", "x": 7.5, "y": 3 },
+ { "label": "M", "x": 8.5, "y": 3 },
+ { "label": ",", "x": 9.5, "y": 3 },
+ { "label": ".", "x": 10.5, "y": 3 },
+ { "label": "/", "x": 11.5, "y": 3 },
+ { "label": "Shift", "w": 2.75, "x": 12.5, "y": 3 },
+ { "label": "\u2191", "x": 15.25, "y": 3 },
+ { "label": "Super", "w": 1.25, "x": 0, "y": 4 },
+ { "label": "Ctrl", "w": 1.25, "x": 1.25, "y": 4 },
+ { "label": "Alt", "w": 1.25, "x": 3.37, "y": 4 },
+ { "w": 6.25, "x": 4.62, "y": 4 },
+ { "label": "Alt", "w": 1.25, "x": 10.87, "y": 4 },
+ { "label": "Function", "w": 1.25, "x": 12.12, "y": 4 },
+ { "label": "\u2190", "x": 14.25, "y": 4 },
+ { "label": "\u2193", "x": 15.25, "y": 4 },
+ { "label": "\u2192", "x": 16.25, "y": 4 }
+ ]
},
- "LAYOUT_split": {
- "layout": [{"label":"Encd", "x":0.5, "y":0}, {"label":"Esc", "x":1.5, "y":0}, {"label":"1", "x":2.5, "y":0}, {"label":"2", "x":3.5, "y":0}, {"label":"3", "x":4.5, "y":0}, {"label":"4", "x":5.5, "y":0}, {"label":"5", "x":6.5, "y":0}, {"label":"6", "x":7.5, "y":0}, {"label":"7", "x":8.5, "y":0}, {"label":"8", "x":9.5, "y":0}, {"label":"9", "x":10.5, "y":0}, {"label":"0", "x":11.5, "y":0}, {"label":"_", "x":12.5, "y":0}, {"label":"+", "x":13.5, "y":0}, {"label":"\u2190", "x":14.5, "y":0}, {"label":"Del", "x":15.5, "y":0}, {"label":"Tab", "x":1, "y":1, "w":1.5}, {"label":"Q", "x":2.5, "y":1}, {"label":"W", "x":3.5, "y":1}, {"label":"E", "x":4.5, "y":1}, {"label":"R", "x":5.5, "y":1}, {"label":"T", "x":6.5, "y":1}, {"label":"Y", "x":7.5, "y":1}, {"label":"U", "x":8.5, "y":1}, {"label":"I", "x":9.5, "y":1}, {"label":"O", "x":10.5, "y":1}, {"label":"P", "x":11.5, "y":1}, {"label":"[", "x":12.5, "y":1}, {"label":"]", "x":13.5, "y":1}, {"label":"\\", "x":14.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0.75, "y":2, "w":1.75}, {"label":"A", "x":2.5, "y":2}, {"label":"S", "x":3.5, "y":2}, {"label":"D", "x":4.5, "y":2}, {"label":"F", "x":5.5, "y":2}, {"label":"G", "x":6.5, "y":2}, {"label":"H", "x":7.5, "y":2}, {"label":"J", "x":8.5, "y":2}, {"label":"K", "x":9.5, "y":2}, {"label":"L", "x":10.5, "y":2}, {"label":";", "x":11.5, "y":2}, {"label":"'", "x":12.5, "y":2}, {"label":"Enter", "x":13.5, "y":2, "w":2.25}, {"label":"Shift", "x":0.25, "y":3, "w":2.25}, {"label":"Z", "x":2.5, "y":3}, {"label":"X", "x":3.5, "y":3}, {"label":"C", "x":4.5, "y":3}, {"label":"V", "x":5.5, "y":3}, {"label":"B", "x":6.5, "y":3}, {"label":"N", "x":7.5, "y":3}, {"label":"M", "x":8.5, "y":3}, {"label":",", "x":9.5, "y":3}, {"label":".", "x":10.5, "y":3}, {"label":"/", "x":11.5, "y":3}, {"label":"Shift", "x":12.5, "y":3, "w":1.75}, {"label":"Fn", "x":14.25, "y":3}, {"label":"\u2191", "x":15.25, "y":3}, {"label":"Super", "x":0, "y":4, "w":1.25}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":3.37, "y":4, "w":1.25}, {"x":4.62, "y":4, "w":2.75}, {"x":7.37, "y":4, "w":2.25}, {"x":9.62, "y":4, "w":1.25}, {"label":"Alt", "x":10.87, "y":4, "w":1.25}, {"label":"Function", "x":12.12, "y":4, "w":1.25}, {"label":"\u2190", "x":14.25, "y":4}, {"label":"\u2193", "x":15.25, "y":4}, {"label":"\u2192", "x":16.25, "y":4}]
+ "LAYOUT_split": {
+ "layout": [
+ { "label": "Encd", "x": 0.5, "y": 0 },
+ { "label": "Esc", "x": 1.5, "y": 0 },
+ { "label": "1", "x": 2.5, "y": 0 },
+ { "label": "2", "x": 3.5, "y": 0 },
+ { "label": "3", "x": 4.5, "y": 0 },
+ { "label": "4", "x": 5.5, "y": 0 },
+ { "label": "5", "x": 6.5, "y": 0 },
+ { "label": "6", "x": 7.5, "y": 0 },
+ { "label": "7", "x": 8.5, "y": 0 },
+ { "label": "8", "x": 9.5, "y": 0 },
+ { "label": "9", "x": 10.5, "y": 0 },
+ { "label": "0", "x": 11.5, "y": 0 },
+ { "label": "_", "x": 12.5, "y": 0 },
+ { "label": "+", "x": 13.5, "y": 0 },
+ { "label": "\u2190", "x": 14.5, "y": 0 },
+ { "label": "Del", "x": 15.5, "y": 0 },
+ { "label": "Tab", "w": 1.5, "x": 1, "y": 1 },
+ { "label": "Q", "x": 2.5, "y": 1 },
+ { "label": "W", "x": 3.5, "y": 1 },
+ { "label": "E", "x": 4.5, "y": 1 },
+ { "label": "R", "x": 5.5, "y": 1 },
+ { "label": "T", "x": 6.5, "y": 1 },
+ { "label": "Y", "x": 7.5, "y": 1 },
+ { "label": "U", "x": 8.5, "y": 1 },
+ { "label": "I", "x": 9.5, "y": 1 },
+ { "label": "O", "x": 10.5, "y": 1 },
+ { "label": "P", "x": 11.5, "y": 1 },
+ { "label": "[", "x": 12.5, "y": 1 },
+ { "label": "]", "x": 13.5, "y": 1 },
+ { "label": "\\", "w": 1.5, "x": 14.5, "y": 1 },
+ { "label": "Caps Lock", "w": 1.75, "x": 0.75, "y": 2 },
+ { "label": "A", "x": 2.5, "y": 2 },
+ { "label": "S", "x": 3.5, "y": 2 },
+ { "label": "D", "x": 4.5, "y": 2 },
+ { "label": "F", "x": 5.5, "y": 2 },
+ { "label": "G", "x": 6.5, "y": 2 },
+ { "label": "H", "x": 7.5, "y": 2 },
+ { "label": "J", "x": 8.5, "y": 2 },
+ { "label": "K", "x": 9.5, "y": 2 },
+ { "label": "L", "x": 10.5, "y": 2 },
+ { "label": ";", "x": 11.5, "y": 2 },
+ { "label": "'", "x": 12.5, "y": 2 },
+ { "label": "Enter", "w": 2.25, "x": 13.5, "y": 2 },
+ { "label": "CapsLock", "x": 0.25, "y": 3 },
+ { "label": "Shift", "w": 1.25, "x": 1.25, "y": 3 },
+ { "label": "Z", "x": 2.5, "y": 3 },
+ { "label": "X", "x": 3.5, "y": 3 },
+ { "label": "C", "x": 4.5, "y": 3 },
+ { "label": "V", "x": 5.5, "y": 3 },
+ { "label": "B", "x": 6.5, "y": 3 },
+ { "label": "N", "x": 7.5, "y": 3 },
+ { "label": "M", "x": 8.5, "y": 3 },
+ { "label": ",", "x": 9.5, "y": 3 },
+ { "label": ".", "x": 10.5, "y": 3 },
+ { "label": "/", "x": 11.5, "y": 3 },
+ { "label": "Shift", "w": 1.75, "x": 12.5, "y": 3 },
+ { "label": "Fn", "x": 14.25, "y": 3 },
+ { "label": "\u2191", "x": 15.25, "y": 3 },
+ { "label": "Super", "w": 1.25, "x": 0, "y": 4 },
+ { "label": "Ctrl", "w": 1.25, "x": 1.25, "y": 4 },
+ { "label": "Alt", "w": 1.25, "x": 3.37, "y": 4 },
+ { "w": 2.75, "x": 4.62, "y": 4 },
+ { "w": 2.25, "x": 7.37, "y": 4 },
+ { "w": 1.25, "x": 9.62, "y": 4 },
+ { "label": "Alt", "w": 1.25, "x": 10.87, "y": 4 },
+ { "label": "Function", "w": 1.25, "x": 12.12, "y": 4 },
+ { "label": "\u2190", "x": 14.25, "y": 4 },
+ { "label": "\u2193", "x": 15.25, "y": 4 },
+ { "label": "\u2192", "x": 16.25, "y": 4 }
+ ]
}
}
}
diff --git a/keyboards/ez_maker/directpins/promicro/info.json b/keyboards/ez_maker/directpins/promicro/info.json
index ad91afeb9a6..419450385ce 100644
--- a/keyboards/ez_maker/directpins/promicro/info.json
+++ b/keyboards/ez_maker/directpins/promicro/info.json
@@ -6,7 +6,7 @@
"debounce": 5,
"diode_direction": "COL2ROW",
"features": {
- "bootmagic_lite": true,
+ "bootmagic": true,
"extrakey": true,
"mousekey": true
},
diff --git a/keyboards/ez_maker/directpins/proton_c/info.json b/keyboards/ez_maker/directpins/proton_c/info.json
index 4b72f46105c..a284e5c41f6 100644
--- a/keyboards/ez_maker/directpins/proton_c/info.json
+++ b/keyboards/ez_maker/directpins/proton_c/info.json
@@ -6,7 +6,7 @@
"processor": "STM32F303",
"board": "QMK_PROTON_C",
"features": {
- "bootmagic_lite": true,
+ "bootmagic": true,
"extrakey": true,
"mousekey": true
},
diff --git a/keyboards/ez_maker/directpins/teensy_2/info.json b/keyboards/ez_maker/directpins/teensy_2/info.json
index cc2e6feec76..0c8fa672a9f 100644
--- a/keyboards/ez_maker/directpins/teensy_2/info.json
+++ b/keyboards/ez_maker/directpins/teensy_2/info.json
@@ -7,7 +7,7 @@
"debounce": 5,
"diode_direction": "COL2ROW",
"features": {
- "bootmagic_lite": true,
+ "bootmagic": true,
"extrakey": true,
"mousekey": true
},
diff --git a/keyboards/ez_maker/directpins/teensy_2pp/info.json b/keyboards/ez_maker/directpins/teensy_2pp/info.json
index 1e2e69d90e7..e12544a5ef9 100644
--- a/keyboards/ez_maker/directpins/teensy_2pp/info.json
+++ b/keyboards/ez_maker/directpins/teensy_2pp/info.json
@@ -7,7 +7,7 @@
"debounce": 5,
"diode_direction": "COL2ROW",
"features": {
- "bootmagic_lite": true,
+ "bootmagic": true,
"extrakey": true,
"mousekey": true
},
diff --git a/keyboards/ez_maker/directpins/teensy_32/config.h b/keyboards/ez_maker/directpins/teensy_32/config.h
index 861ae70e41c..c487a84ab16 100644
--- a/keyboards/ez_maker/directpins/teensy_32/config.h
+++ b/keyboards/ez_maker/directpins/teensy_32/config.h
@@ -17,7 +17,7 @@
#pragma once
// i2c_master defines
-#define I2C1_SCL 0 // A2 on pinout = B0
-#define I2C1_SDA 1 // A3 on pinout = B1
+#define I2C1_SCL_PIN B0 // A2 on pinout = B0
+#define I2C1_SDA_PIN B1 // A3 on pinout = B1
#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
diff --git a/keyboards/ez_maker/directpins/teensy_32/info.json b/keyboards/ez_maker/directpins/teensy_32/info.json
index 5de8d90a5c7..e0c024ec942 100644
--- a/keyboards/ez_maker/directpins/teensy_32/info.json
+++ b/keyboards/ez_maker/directpins/teensy_32/info.json
@@ -5,7 +5,7 @@
"debounce": 5,
"processor": "MK20DX256",
"features": {
- "bootmagic_lite": true,
+ "bootmagic": true,
"extrakey": true,
"mousekey": true
},
diff --git a/keyboards/ez_maker/directpins/teensy_lc/config.h b/keyboards/ez_maker/directpins/teensy_lc/config.h
index 861ae70e41c..c487a84ab16 100644
--- a/keyboards/ez_maker/directpins/teensy_lc/config.h
+++ b/keyboards/ez_maker/directpins/teensy_lc/config.h
@@ -17,7 +17,7 @@
#pragma once
// i2c_master defines
-#define I2C1_SCL 0 // A2 on pinout = B0
-#define I2C1_SDA 1 // A3 on pinout = B1
+#define I2C1_SCL_PIN B0 // A2 on pinout = B0
+#define I2C1_SDA_PIN B1 // A3 on pinout = B1
#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
diff --git a/keyboards/ez_maker/directpins/teensy_lc/info.json b/keyboards/ez_maker/directpins/teensy_lc/info.json
index 882fa9ad958..bf93c41fab6 100644
--- a/keyboards/ez_maker/directpins/teensy_lc/info.json
+++ b/keyboards/ez_maker/directpins/teensy_lc/info.json
@@ -5,7 +5,7 @@
"debounce": 5,
"processor": "MKL26Z64",
"features": {
- "bootmagic_lite": true,
+ "bootmagic": true,
"extrakey": true,
"mousekey": true
},
diff --git a/keyboards/fallacy/indicators.c b/keyboards/fallacy/indicators.c
index dcf1b4de070..c577bc9a8a5 100755
--- a/keyboards/fallacy/indicators.c
+++ b/keyboards/fallacy/indicators.c
@@ -54,7 +54,7 @@ void set_fallacy_led(int index, bool state) {
/* define LED matrix
*/
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
{0, C1_1},
{0, C2_1},
{0, C3_1},
diff --git a/keyboards/fallacy/rules.mk b/keyboards/fallacy/rules.mk
index 6032696f887..78ee2f1f69e 100755
--- a/keyboards/fallacy/rules.mk
+++ b/keyboards/fallacy/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/fc660c/actuation_point.h b/keyboards/fc660c/actuation_point.h
index f7066d92c1f..e02832186c0 100644
--- a/keyboards/fc660c/actuation_point.h
+++ b/keyboards/fc660c/actuation_point.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef ACTUATION_POINT_H
-#define ACTUATION_POINT_H
+#pragma once
#include
@@ -28,5 +27,3 @@ void actuation_point_down(void);
// be careful with this.
void adjust_actuation_point(int offset);
-
-#endif
diff --git a/keyboards/fc660c/config.h b/keyboards/fc660c/config.h
index e979daf331f..460881cb174 100644
--- a/keyboards/fc660c/config.h
+++ b/keyboards/fc660c/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -80,5 +79,3 @@ along with this program. If not, see .
// test all keys before further adjustment.
// this should probably stay in the range +/-5.
// #define ACTUATION_DEPTH_ADJUSTMENT 0
-
-#endif
diff --git a/keyboards/fc660c/fc660c.h b/keyboards/fc660c/fc660c.h
index e3621570dd1..fca02dc0e98 100644
--- a/keyboards/fc660c/fc660c.h
+++ b/keyboards/fc660c/fc660c.h
@@ -14,38 +14,23 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef FC660C_H
-#define FC660C_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
#define LAYOUT( \
- K13, K10, K11, K12, K14, K16, K17, K15, K1B, K18, K19, K1A, K1C, K1E, K1F, \
- K03, K00, K01, K02, K04, K06, K07, K05, K0B, K08, K09, K0A, K0C, K0E, K0F, \
- K43, K40, K41, K42, K44, K46, K47, K45, K4B, K48, K49, K4A, K4E, \
- K33, K31, K32, K34, K36, K37, K35, K3B, K38, K39, K3A, K3C, K3D, \
- K23, K21, K22, K27, K28, K2A, K2C, K2E, K2D, K2F \
+ k13, k10, k11, k12, k14, k16, k17, k15, k1B, k18, k19, k1A, k1C, k1E, k1F, \
+ k03, k00, k01, k02, k04, k06, k07, k05, k0B, k08, k09, k0A, k0C, k0E, k0F, \
+ k43, k40, k41, k42, k44, k46, k47, k45, k4B, k48, k49, k4A, k4E, \
+ k33, k31, k32, k34, k36, k37, k35, k3B, k38, k39, k3A, k3C, k3D, \
+ k23, k21, k22, k27, k28, k2A, k2C, k2E, k2D, k2F \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, \
- K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, \
- K18, K19, K1A, K1B, K1C, KC_NO, K1E, K1F }, \
- { KC_NO, K21, K22, K23, KC_NO, KC_NO, KC_NO, K27, \
- K28, KC_NO, K2A, KC_NO, K2C, K2D, K2E, K2F }, \
- { KC_NO, K31, K32, K33, K34, K35, K36, K37, \
- K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO }, \
- { K40, K41, K42, K43, K44, K45, K46, K47, \
- K48, K49, K4A, K4B, KC_NO, KC_NO, K4E, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, XXX, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, k1E, k1F }, \
+ { XXX, k21, k22, k23, XXX, XXX, XXX, k27, k28, XXX, k2A, XXX, k2C, k2D, k2E, k2F }, \
+ { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX, XXX }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, XXX, XXX, k4E, XXX } \
}
-/*
-KEYMAP(
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
- _______,_______,_______, _______, _______,_______,_______, _______,_______,_______
- )
-*/
-
-#endif
diff --git a/keyboards/fc660c/i2c.h b/keyboards/fc660c/i2c.h
index c15b6bc5065..8910e70f10a 100644
--- a/keyboards/fc660c/i2c.h
+++ b/keyboards/fc660c/i2c.h
@@ -1,5 +1,4 @@
-#ifndef I2C_H
-#define I2C_H
+#pragma once
#include
@@ -45,5 +44,3 @@ extern unsigned char i2c_readNak(void);
extern unsigned char i2c_read(unsigned char ack);
#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
-
-#endif
diff --git a/keyboards/fc980c/actuation_point.h b/keyboards/fc980c/actuation_point.h
index f7066d92c1f..e02832186c0 100644
--- a/keyboards/fc980c/actuation_point.h
+++ b/keyboards/fc980c/actuation_point.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef ACTUATION_POINT_H
-#define ACTUATION_POINT_H
+#pragma once
#include
@@ -28,5 +27,3 @@ void actuation_point_down(void);
// be careful with this.
void adjust_actuation_point(int offset);
-
-#endif
diff --git a/keyboards/fc980c/config.h b/keyboards/fc980c/config.h
index b74ca64a5c3..b0bffef7607 100644
--- a/keyboards/fc980c/config.h
+++ b/keyboards/fc980c/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -87,5 +86,3 @@ along with this program. If not, see .
// test all keys before further adjustment.
// this should probably stay in the range +/-5.
// #define ACTUATION_DEPTH_ADJUSTMENT 0
-
-#endif
diff --git a/keyboards/fc980c/i2c.h b/keyboards/fc980c/i2c.h
index c15b6bc5065..8910e70f10a 100644
--- a/keyboards/fc980c/i2c.h
+++ b/keyboards/fc980c/i2c.h
@@ -1,5 +1,4 @@
-#ifndef I2C_H
-#define I2C_H
+#pragma once
#include
@@ -45,5 +44,3 @@ extern unsigned char i2c_readNak(void);
extern unsigned char i2c_read(unsigned char ack);
#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
-
-#endif
diff --git a/keyboards/feels/feels65/rules.mk b/keyboards/feels/feels65/rules.mk
index 471f877db8e..c28943230af 100644
--- a/keyboards/feels/feels65/rules.mk
+++ b/keyboards/feels/feels65/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/felix/rules.mk b/keyboards/felix/rules.mk
index 23052482e8c..3efb7c99a61 100644
--- a/keyboards/felix/rules.mk
+++ b/keyboards/felix/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ferris/0_2/bling/config.h b/keyboards/ferris/0_2/bling/config.h
index bed489ca08f..4b2efd378d7 100644
--- a/keyboards/ferris/0_2/bling/config.h
+++ b/keyboards/ferris/0_2/bling/config.h
@@ -32,3 +32,51 @@ along with this program. If not, see .
#define DRIVER_2_LED_TOTAL 7
#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+// 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
diff --git a/keyboards/ferris/0_2/config.h b/keyboards/ferris/0_2/config.h
index 89eac7ed166..f51e5dd8f15 100644
--- a/keyboards/ferris/0_2/config.h
+++ b/keyboards/ferris/0_2/config.h
@@ -67,10 +67,8 @@ along with this program. If not, see .
/* i2c settings */
#define I2C_DRIVER I2CD2
-#define I2C1_SCL_BANK GPIOB
-#define I2C1_SCL 10
-#define I2C1_SDA_BANK GPIOB
-#define I2C1_SDA 11
+#define I2C1_SCL_PIN B10
+#define I2C1_SDA_PIN B11
#define I2C1_TIMINGR_PRESC 2U
#define I2C1_TIMINGR_SCLDEL 1U
#define I2C1_TIMINGR_SDADEL 0U
diff --git a/keyboards/ferris/0_2/matrix.c b/keyboards/ferris/0_2/matrix.c
index afa8a344cd2..ff0e66d65cd 100644
--- a/keyboards/ferris/0_2/matrix.c
+++ b/keyboards/ferris/0_2/matrix.c
@@ -59,11 +59,6 @@ extern i2c_status_t mcp23017_status;
bool i2c_initialized = 0;
i2c_status_t mcp23017_status = I2C_ADDR;
-#define I2C2_SCL_BANK GPIOB
-#define I2C2_SCL 10
-#define I2C2_SDA_BANK GPIOB
-#define I2C2_SDA 11
-
uint8_t init_mcp23017(void) {
print("init mcp23017\n");
mcp23017_status = I2C_ADDR;
diff --git a/keyboards/ferris/0_2/rules.mk b/keyboards/ferris/0_2/rules.mk
index b1b9d42fbd0..75ec20b4db3 100644
--- a/keyboards/ferris/0_2/rules.mk
+++ b/keyboards/ferris/0_2/rules.mk
@@ -6,7 +6,7 @@ BOOTLOADER = stm32-dfu
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/ferris/keymaps/madhatter/rules.mk b/keyboards/ferris/keymaps/madhatter/rules.mk
index 76c1045744d..25e61e4d5bb 100644
--- a/keyboards/ferris/keymaps/madhatter/rules.mk
+++ b/keyboards/ferris/keymaps/madhatter/rules.mk
@@ -1,2 +1,2 @@
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
TAP_DANCE_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/ffkeebs/puca/info.json b/keyboards/ffkeebs/puca/info.json
index 0b5b957e632..204f0ca497c 100644
--- a/keyboards/ffkeebs/puca/info.json
+++ b/keyboards/ffkeebs/puca/info.json
@@ -2,35 +2,105 @@
"keyboard_name": "Puca",
"url": "https://ffkeebs.com/collections/puca/",
"maintainer": "Sleepdealr",
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_all"
+ },
"layouts": {
- "LAYOUT": {
+ "LAYOUT_all": {
"layout": [
{ "label": "Rotary", "x": 0.5, "y": 0 },
{ "label": "Pg Up", "x": 2, "y": 0 },
{ "label": "Pg Dn", "x": 3, "y": 0 },
+
{ "label": "Layer Toggle", "x": 0, "y": 1.25 },
{ "label": "/", "x": 1, "y": 1.25 },
{ "label": "*", "x": 2, "y": 1.25 },
{ "label": "-", "x": 3, "y": 1.25 },
+
{ "label": "7", "x": 0, "y": 2.25 },
{ "label": "8", "x": 1, "y": 2.25 },
{ "label": "9", "x": 2, "y": 2.25 },
- { "label": "+", "x": 3, "y": 2.25, "h": 2 },
- { "label": "+", "x": 4, "y": 2.25 },
+ { "label": "+", "x": 3, "y": 2.25 },
+ { "label": "+", "x": 4, "y": 2.25, "h": 2 },
+
+ { "label": "4", "x": 0, "y": 3.25 },
+ { "label": "5", "x": 1, "y": 3.25 },
+ { "label": "6", "x": 2, "y": 3.25 },
+ { "label": "|", "x": 3, "y": 3.25 },
+
+ { "label": "1", "x": 0, "y": 4.25 },
+ { "label": "2", "x": 1, "y": 4.25 },
+ { "label": "3", "x": 2, "y": 4.25 },
+ { "label": "Enter", "x": 3, "y": 4.25 },
+ { "label": "Enter", "x": 4, "y": 4.25, "h": 2 },
+
+ { "label": "0", "x": 0, "y": 5.25 },
+ { "label": "00", "x": 1, "y": 5.25 },
+ { "label": ".", "x": 2, "y": 5.25 },
+ { "label": ".", "x": 3, "y": 5.25 },
+
+ { "label": "0", "x": 0, "y": 6.25, "w": 2 }
+ ]
+ },
+ "LAYOUT_numpad": {
+ "layout": [
+ { "label": "Rotary", "x": 0.5, "y": 0 },
+ { "label": "Pg Up", "x": 2, "y": 0 },
+ { "label": "Pg Dn", "x": 3, "y": 0 },
+
+ { "label": "Layer Toggle", "x": 0, "y": 1.25 },
+ { "label": "/", "x": 1, "y": 1.25 },
+ { "label": "*", "x": 2, "y": 1.25 },
+ { "label": "-", "x": 3, "y": 1.25 },
+
+ { "label": "7", "x": 0, "y": 2.25 },
+ { "label": "8", "x": 1, "y": 2.25 },
+ { "label": "9", "x": 2, "y": 2.25 },
+
{ "label": "4", "x": 0, "y": 3.25 },
{ "label": "5", "x": 1, "y": 3.25 },
{ "label": "6", "x": 2, "y": 3.25 },
- { "label": "|", "x": 4, "y": 3.25 },
+ { "label": "+", "x": 3, "y": 2.25, "h": 2 },
+
{ "label": "1", "x": 0, "y": 4.25 },
{ "label": "2", "x": 1, "y": 4.25 },
{ "label": "3", "x": 2, "y": 4.25 },
- { "label": "Enter", "x": 3, "y": 4.25, "h": 2 },
- { "label": "Enter", "x": 4, "y": 4.25 },
+
{ "label": "0", "x": 0, "y": 5.25, "w": 2 },
{ "label": ".", "x": 2, "y": 5.25 },
- { "label": ".", "x": 4, "y": 5.25 },
- { "label": "0", "x": 0, "y": 6.25 },
- { "label": "00", "x": 1, "y": 6.25 }
+ { "label": "Enter", "x": 3, "y": 4.25, "h": 2 }
+ ]
+ },
+ "LAYOUT_ortho": {
+ "layout": [
+ { "label": "Rotary", "x": 0.5, "y": 0 },
+ { "label": "Pg Up", "x": 2, "y": 0 },
+ { "label": "Pg Dn", "x": 3, "y": 0 },
+
+ { "label": "Layer Toggle", "x": 0, "y": 1.25 },
+ { "label": "/", "x": 1, "y": 1.25 },
+ { "label": "*", "x": 2, "y": 1.25 },
+ { "label": "-", "x": 3, "y": 1.25 },
+
+ { "label": "7", "x": 0, "y": 2.25 },
+ { "label": "8", "x": 1, "y": 2.25 },
+ { "label": "9", "x": 2, "y": 2.25 },
+ { "label": "+", "x": 3, "y": 2.25 },
+
+ { "label": "4", "x": 0, "y": 3.25 },
+ { "label": "5", "x": 1, "y": 3.25 },
+ { "label": "6", "x": 2, "y": 3.25 },
+ { "label": "|", "x": 3, "y": 3.25 },
+
+ { "label": "1", "x": 0, "y": 4.25 },
+ { "label": "2", "x": 1, "y": 4.25 },
+ { "label": "3", "x": 2, "y": 4.25 },
+ { "label": "Enter", "x": 3, "y": 4.25 },
+
+ { "label": "0", "x": 0, "y": 5.25 },
+ { "label": "00", "x": 1, "y": 5.25 },
+ { "label": ".", "x": 2, "y": 5.25 },
+ { "label": "Enter", "x": 3, "y": 5.25 }
]
}
}
diff --git a/keyboards/ffkeebs/puca/keymaps/default/keymap.c b/keyboards/ffkeebs/puca/keymaps/default/keymap.c
index fb8a6bc7c12..12c20c0149e 100644
--- a/keyboards/ffkeebs/puca/keymaps/default/keymap.c
+++ b/keyboards/ffkeebs/puca/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 Sleepdealer
+/* Copyright 2021 Sleepdealer, James Young for QMK (@noroadsleft)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,38 +15,26 @@
*/
#include QMK_KEYBOARD_H
-// 00 Functionality
-enum custom_keycodes {
- MC_00 = SAFE_RANGE,
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case MC_00:
- if (record->event.pressed) {
- SEND_STRING("00");
- }
- break;
- }
- return true;
-};
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_MUTE, KC_PGUP, KC_PGDN,
+ TG(1), KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9, KC_PPLS, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_PIPE,
+ KC_P1, KC_P2, KC_P3, KC_ENTER, KC_ENTER,
+ KC_P0, MC_00, KC_PDOT, KC_PDOT,
+ KC_P0
+ ),
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- LAYOUT(
- KC_MUTE, KC_PGUP, KC_PGDN,
- TG(1), KC_PSLS, KC_PAST, KC_PMNS,
- KC_P7, KC_P8, KC_P9, KC_PPLS, KC_PPLS,
- KC_P4, KC_P5, KC_P6, KC_PIPE,
- KC_P1, KC_P2, KC_P3, KC_ENTER, KC_ENTER,
- KC_P0, MC_00, KC_PDOT, KC_PDOT,
- KC_P0),
- LAYOUT(
+ [1] = LAYOUT_all(
KC_TRNS, RGB_HUI, RGB_VAI,
- TG(1), RGB_TOG, RGB_HUD, RGB_VAD,
- KC_PGUP, KC_UP, KC_PGDN, RGB_MOD, RGB_MOD,
- KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
- KC_INS, KC_HOME, KC_END, RGB_RMOD, RGB_RMOD,
- KC_ESC, KC_TRNS, KC_DEL, KC_TRNS,
- KC_ESC)
+ TG(1), RGB_TOG, RGB_HUD, RGB_VAD,
+ KC_PGUP, KC_UP, KC_PGDN, RGB_MOD, RGB_MOD,
+ KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
+ KC_INS, KC_HOME, KC_END, RGB_RMOD, RGB_RMOD,
+ KC_ESC, KC_TRNS, KC_DEL, KC_TRNS,
+ KC_ESC
+ ),
+
};
diff --git a/keyboards/ffkeebs/puca/keymaps/default_numpad/keymap.c b/keyboards/ffkeebs/puca/keymaps/default_numpad/keymap.c
new file mode 100644
index 00000000000..fe676786120
--- /dev/null
+++ b/keyboards/ffkeebs/puca/keymaps/default_numpad/keymap.c
@@ -0,0 +1,38 @@
+/* Copyright 2021 Sleepdealer, James Young for QMK (@noroadsleft)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_numpad(
+ KC_MUTE, KC_PGUP, KC_PGDN,
+ TG(1), KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_ENTER
+ ),
+
+ [1] = LAYOUT_numpad(
+ _______, RGB_HUI, RGB_VAI,
+ TG(1), RGB_TOG, RGB_HUD, RGB_VAD,
+ KC_PGUP, KC_UP, KC_PGDN,
+ KC_LEFT, KC_DOWN, KC_RGHT, RGB_MOD,
+ KC_INS, KC_HOME, KC_END,
+ KC_ESC, KC_DEL, RGB_RMOD
+ ),
+
+};
diff --git a/keyboards/ffkeebs/puca/keymaps/default_ortho/keymap.c b/keyboards/ffkeebs/puca/keymaps/default_ortho/keymap.c
new file mode 100644
index 00000000000..e734e69745c
--- /dev/null
+++ b/keyboards/ffkeebs/puca/keymaps/default_ortho/keymap.c
@@ -0,0 +1,38 @@
+/* Copyright 2021 Sleepdealer, James Young for QMK (@noroadsleft)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_ortho(
+ KC_MUTE, KC_PGUP, KC_PGDN,
+ TG(1), KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_PIPE,
+ KC_P1, KC_P2, KC_P3, KC_ENTER,
+ KC_P0, MC_00, KC_PDOT, KC_ENTER
+ ),
+
+ [1] = LAYOUT_ortho(
+ _______, RGB_HUI, RGB_VAI,
+ TG(1), RGB_TOG, RGB_HUD, RGB_VAD,
+ KC_PGUP, KC_UP, KC_PGDN, RGB_MOD,
+ KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX,
+ KC_INS, KC_HOME, KC_END, RGB_RMOD,
+ KC_ESC, XXXXXXX, KC_DEL, XXXXXXX
+ )
+
+};
diff --git a/keyboards/ffkeebs/puca/puca.c b/keyboards/ffkeebs/puca/puca.c
index e08ac0cb3b3..21944a9e5d5 100644
--- a/keyboards/ffkeebs/puca/puca.c
+++ b/keyboards/ffkeebs/puca/puca.c
@@ -15,6 +15,20 @@
*/
#include "puca.h"
+bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+ switch (keycode) {
+ case MC_00:
+ if (record->event.pressed) {
+ SEND_STRING("00");
+ }
+ break;
+ }
+ return true;
+}
+
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; }
if (clockwise) {
@@ -29,7 +43,8 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
// OLED
#ifdef OLED_ENABLE
__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
-__attribute__((weak)) void oled_task_user(void) {
+bool oled_task_kb(void) {
+ if (!oled_task_user()) { return false; }
// WPM-responsive animation stuff here
# define IDLE_FRAMES 2
# define ANIM_FRAME_DURATION 400 // how long each frame lasts in ms
@@ -105,7 +120,7 @@ __attribute__((weak)) void oled_task_user(void) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}};
-
+
void animation_phase(void) {
current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE);
@@ -114,7 +129,7 @@ __attribute__((weak)) void oled_task_user(void) {
anim_timer = timer_read32();
animation_phase();
}
-
+
oled_set_cursor(0, 6);
oled_write_P(PSTR("PUCA\nPAD\n"), false);
oled_write_P(PSTR("-----\n"), false);
@@ -129,5 +144,6 @@ __attribute__((weak)) void oled_task_user(void) {
oled_write_P(PSTR("FUNC\n"), false);
break;
}
+ return true;
}
-#endif
\ No newline at end of file
+#endif
diff --git a/keyboards/ffkeebs/puca/puca.h b/keyboards/ffkeebs/puca/puca.h
index bc17c9f36f4..ab4dc379169 100644
--- a/keyboards/ffkeebs/puca/puca.h
+++ b/keyboards/ffkeebs/puca/puca.h
@@ -16,26 +16,86 @@
#pragma once
-// K24 is 2U Plus
-// K44 is 2u Enter
-// K54 is 2u 0
+#include "quantum.h"
+
+/* Keycodes defined here can be used by any keymap. If you wish to
+ * define additional keycodes for your personal keymap only, assign
+ * your first custom keycode to `= NEW_SAFE_RANGE`.
+ *
+ * See `process_record_kb()` in `puca.c`.
+ */
+enum keyboard_keycodes {
+ MC_00 = SAFE_RANGE,
+ NEW_SAFE_RANGE,
+};
+#define XXX KC_NO
-#include "quantum.h"
+/*
+ * ┌───┐ ┌───┬───┐
+ * │00 │ │02 │03 │
+ * └───┘ └───┴───┘
+ * ┌───┬───┬───┬───┐
+ * │10 │11 │12 │13 │
+ * ├───┼───┼───┼───┤ ┌───┐
+ * │20 │21 │22 │23 │ │ │
+ * ├───┼───┼───┼───┤ │24 │ 2u Plus
+ * │30 │31 │32 │33 │ │ │
+ * ├───┼───┼───┼───┤ ├───┤
+ * │40 │41 │42 │43 │ │ │
+ * ├───┼───┼───┼───┤ │44 │ 2u Enter
+ * │50 │51 │52 │53 │ │ │
+ * └───┴───┴───┴───┘ └───┘
+ * ┌───────┐
+ * │54 │ 2u 0
+ * └───────┘
+ */
+
+#define LAYOUT_all( \
+ K00, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, K23, K24,\
+ K30, K31, K32, K33, \
+ K40, K41, K42, K43, K44,\
+ K50, K51, K52, K53, \
+ K54 \
+) { \
+ { K00, XXX, K02, K03, XXX }, \
+ { K10, K11, K12, K13, XXX }, \
+ { K20, K21, K22, K23, K24 }, \
+ { K30, K31, K32, K33, XXX }, \
+ { K40, K41, K42, K43, K44 }, \
+ { K50, K51, K52, K53, K54 }, \
+}
+
+#define LAYOUT_numpad( \
+ K00, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, \
+ K30, K31, K32, K24, \
+ K40, K41, K42, \
+ K54, K52, K44 \
+) { \
+ { K00, XXX, K02, K03, XXX }, \
+ { K10, K11, K12, K13, XXX }, \
+ { K20, K21, K22, XXX, K24 }, \
+ { K30, K31, K32, XXX, XXX }, \
+ { K40, K41, K42, XXX, K44 }, \
+ { XXX, XXX, K52, XXX, K54 }, \
+}
-#define LAYOUT( \
- K00, K02, K03, \
- K10, K11, K12, K13, \
- K20, K21, K22, K23, K24,\
- K30, K31, K32, K33, \
- K40, K41, K42, K43, K44,\
- K50, K51, K52, K53, \
- K54 \
+#define LAYOUT_ortho( \
+ K00, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, K23, \
+ K30, K31, K32, K33, \
+ K40, K41, K42, K43, \
+ K50, K51, K52, K53 \
) { \
- { K00, KC_NO, K02, K03, KC_NO }, \
- { K10, K11, K12, K13, KC_NO }, \
- { K20, K21, K22, K23, K24 }, \
- { K30, K31, K32, K33, KC_NO }, \
- { K40, K41, K42, K43, K44 }, \
- { K50, K51, K52, K53, K54 }, \
+ { K00, XXX, K02, K03, XXX }, \
+ { K10, K11, K12, K13, XXX }, \
+ { K20, K21, K22, K23, XXX }, \
+ { K30, K31, K32, K33, XXX }, \
+ { K40, K41, K42, K43, XXX }, \
+ { K50, K51, K52, K53, XXX }, \
}
diff --git a/keyboards/ffkeebs/puca/readme.md b/keyboards/ffkeebs/puca/readme.md
index ff0b2c49ae5..ca4e0f93f93 100644
--- a/keyboards/ffkeebs/puca/readme.md
+++ b/keyboards/ffkeebs/puca/readme.md
@@ -2,7 +2,7 @@
* Keyboard Maintainer: [Sleepdealer](https://github.com/Sleepdealr)
* Hardware Supported: Puca Pad
-* Hardware Availability: Puca GB
+* Hardware Availability: [Puca GB](https://ffkeebs.com/collections/puca)
## Bootloader
diff --git a/keyboards/ffkeebs/puca/rules.mk b/keyboards/ffkeebs/puca/rules.mk
index b27ecc458ba..ede448ac230 100644
--- a/keyboards/ffkeebs/puca/rules.mk
+++ b/keyboards/ffkeebs/puca/rules.mk
@@ -19,7 +19,7 @@ NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-ENCODER_ENABLE = yes #Rotary encoder
+ENCODER_ENABLE = yes # Enable rotary encoder support
+OLED_ENABLE = yes # Enable OLED support
-OLED_ENABLE = yes #OLED
-LTO_ENABLE = yes # Enable Link Time Optimization to reduce firmware size
+LTO_ENABLE = yes # Enable Link Time Optimization to reduce firmware size
diff --git a/keyboards/ffkeebs/siris/rules.mk b/keyboards/ffkeebs/siris/rules.mk
index 71c43814dc2..812a7965e45 100644
--- a/keyboards/ffkeebs/siris/rules.mk
+++ b/keyboards/ffkeebs/siris/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/fjlabs/bks65/rules.mk b/keyboards/fjlabs/bks65/rules.mk
index 3dc41b847c8..64214ee66aa 100644
--- a/keyboards/fjlabs/bks65/rules.mk
+++ b/keyboards/fjlabs/bks65/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/fjlabs/bks65solder/rules.mk b/keyboards/fjlabs/bks65solder/rules.mk
index 3dc41b847c8..64214ee66aa 100644
--- a/keyboards/fjlabs/bks65solder/rules.mk
+++ b/keyboards/fjlabs/bks65solder/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/fjlabs/bolsa65/rules.mk b/keyboards/fjlabs/bolsa65/rules.mk
index cc8bfbe2104..a49a628735b 100644
--- a/keyboards/fjlabs/bolsa65/rules.mk
+++ b/keyboards/fjlabs/bolsa65/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/fjlabs/kf87/rules.mk b/keyboards/fjlabs/kf87/rules.mk
index ed2c3a4fb5d..509c10d0fdd 100644
--- a/keyboards/fjlabs/kf87/rules.mk
+++ b/keyboards/fjlabs/kf87/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/fjlabs/ldk65/rules.mk b/keyboards/fjlabs/ldk65/rules.mk
index dbfecbc773e..c6a391a1d5a 100644
--- a/keyboards/fjlabs/ldk65/rules.mk
+++ b/keyboards/fjlabs/ldk65/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/fjlabs/midway60/rules.mk b/keyboards/fjlabs/midway60/rules.mk
index 57c789f909d..4f873907590 100644
--- a/keyboards/fjlabs/midway60/rules.mk
+++ b/keyboards/fjlabs/midway60/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/fjlabs/polaris/rules.mk b/keyboards/fjlabs/polaris/rules.mk
index 57c789f909d..4f873907590 100644
--- a/keyboards/fjlabs/polaris/rules.mk
+++ b/keyboards/fjlabs/polaris/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/fjlabs/ready100/rules.mk b/keyboards/fjlabs/ready100/rules.mk
index 029a96b33dc..1c5940f4f70 100644
--- a/keyboards/fjlabs/ready100/rules.mk
+++ b/keyboards/fjlabs/ready100/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/flehrad/bigswitch/bigswitch.h b/keyboards/flehrad/bigswitch/bigswitch.h
index ea3d51a1f3b..c6c2f026d5c 100644
--- a/keyboards/flehrad/bigswitch/bigswitch.h
+++ b/keyboards/flehrad/bigswitch/bigswitch.h
@@ -14,15 +14,13 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef BIGSWITCH_H
-#define BIGSWITCH_H
+
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00 \
+ k00 \
) { \
- { K00 } \
+ { k00 } \
}
-
-#endif
diff --git a/keyboards/flehrad/bigswitch/config.h b/keyboards/flehrad/bigswitch/config.h
index b6fb15d3b71..c0f73366a74 100644
--- a/keyboards/flehrad/bigswitch/config.h
+++ b/keyboards/flehrad/bigswitch/config.h
@@ -14,8 +14,8 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+
+#pragma once
#include "config_common.h"
@@ -52,5 +52,3 @@ along with this program. If not, see .
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 8
#endif
-
-#endif
diff --git a/keyboards/flehrad/numbrero/rules.mk b/keyboards/flehrad/numbrero/rules.mk
index 06898ee79f8..50f5eaf1cd5 100644
--- a/keyboards/flehrad/numbrero/rules.mk
+++ b/keyboards/flehrad/numbrero/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/flehrad/snagpad/rules.mk b/keyboards/flehrad/snagpad/rules.mk
index 56e951edac7..a64baaeb551 100644
--- a/keyboards/flehrad/snagpad/rules.mk
+++ b/keyboards/flehrad/snagpad/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/flehrad/tradestation/rules.mk b/keyboards/flehrad/tradestation/rules.mk
index 0b8cc74bf24..c129afe553f 100644
--- a/keyboards/flehrad/tradestation/rules.mk
+++ b/keyboards/flehrad/tradestation/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/fleuron/config.h b/keyboards/fleuron/config.h
index 21500d0e9e3..fae7d941aea 100644
--- a/keyboards/fleuron/config.h
+++ b/keyboards/fleuron/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -112,5 +111,3 @@ along with this program. If not, see .
#define RGB_DI_PIN E6 // The pin the LED strip is connected to
#define RGBLED_NUM 18 // Number of LEDs in your strip
#define RGBLIGHT_ANIMATIONS
-
-#endif
diff --git a/keyboards/fleuron/fleuron.h b/keyboards/fleuron/fleuron.h
index abdccf2371a..38f6bb38bfd 100644
--- a/keyboards/fleuron/fleuron.h
+++ b/keyboards/fleuron/fleuron.h
@@ -13,8 +13,8 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef FLEURON_H
-#define FLEURON_H
+
+#pragma once
#include "quantum.h"
@@ -23,22 +23,19 @@
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT_ortho_6x16( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, \
- k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, \
- k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k5d, k5e, k5f \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f }, \
- { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f }, \
- { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k5d, k5e, k5f } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, \
+ k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k5F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k5F } \
}
#define LAYOUT_fleuron_grid LAYOUT_ortho_6x16
-
-#endif
diff --git a/keyboards/flx/lodestone/rules.mk b/keyboards/flx/lodestone/rules.mk
index 3a92f5019ec..2542e5d6dc8 100644
--- a/keyboards/flx/lodestone/rules.mk
+++ b/keyboards/flx/lodestone/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/flx/virgo/rules.mk b/keyboards/flx/virgo/rules.mk
index e81dca4b859..16501de0ae8 100644
--- a/keyboards/flx/virgo/rules.mk
+++ b/keyboards/flx/virgo/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/flygone60/rev3/rules.mk b/keyboards/flygone60/rev3/rules.mk
index fdebc503e9f..f1448c6b26e 100644
--- a/keyboards/flygone60/rev3/rules.mk
+++ b/keyboards/flygone60/rev3/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/foostan/cornelius/rules.mk b/keyboards/foostan/cornelius/rules.mk
index c79f74e34b9..9906266f482 100644
--- a/keyboards/foostan/cornelius/rules.mk
+++ b/keyboards/foostan/cornelius/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/for_science/rules.mk b/keyboards/for_science/rules.mk
index 82c09f75204..608ac37502e 100644
--- a/keyboards/for_science/rules.mk
+++ b/keyboards/for_science/rules.mk
@@ -6,7 +6,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/forever65/info.json b/keyboards/forever65/info.json
index bf879d92d39..6cb2442a08b 100644
--- a/keyboards/forever65/info.json
+++ b/keyboards/forever65/info.json
@@ -14,7 +14,7 @@
"device_ver": "0x0001"
},
"features": {
- "bootmagic_lite": true,
+ "bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
diff --git a/keyboards/four_banger/config.h b/keyboards/four_banger/config.h
index 30e2bd21ac8..7ad7a5c3695 100644
--- a/keyboards/four_banger/config.h
+++ b/keyboards/four_banger/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -45,5 +44,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/four_banger/four_banger.h b/keyboards/four_banger/four_banger.h
index a6da8dd0b7f..1d735a1f0f7 100644
--- a/keyboards/four_banger/four_banger.h
+++ b/keyboards/four_banger/four_banger.h
@@ -1,14 +1,11 @@
-#ifndef KB_H
-#define KB_H
+#pragma once
#include "quantum.h"
#define LAYOUT_ortho_2x2( \
- K00, K01, \
- K10, K11 \
+ k00, k01, \
+ k10, k11 \
) { \
- { K00, K01 }, \
- { K10, K11 } \
+ { k00, k01 }, \
+ { k10, k11 } \
}
-
-#endif
diff --git a/keyboards/four_banger/rules.mk b/keyboards/four_banger/rules.mk
index cd13b1bc52b..855e36c3dd2 100644
--- a/keyboards/four_banger/rules.mk
+++ b/keyboards/four_banger/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/foxlab/key65/hotswap/rules.mk b/keyboards/foxlab/key65/hotswap/rules.mk
index ab6f3e18391..1074896ac5a 100644
--- a/keyboards/foxlab/key65/hotswap/rules.mk
+++ b/keyboards/foxlab/key65/hotswap/rules.mk
@@ -4,7 +4,7 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/foxlab/key65/universal/rules.mk b/keyboards/foxlab/key65/universal/rules.mk
index 129979e0631..60e7e46595d 100644
--- a/keyboards/foxlab/key65/universal/rules.mk
+++ b/keyboards/foxlab/key65/universal/rules.mk
@@ -4,7 +4,7 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/foxlab/leaf60/hotswap/rules.mk b/keyboards/foxlab/leaf60/hotswap/rules.mk
index fb97faa5f0a..0d9012c70b9 100644
--- a/keyboards/foxlab/leaf60/hotswap/rules.mk
+++ b/keyboards/foxlab/leaf60/hotswap/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/foxlab/leaf60/universal/rules.mk b/keyboards/foxlab/leaf60/universal/rules.mk
index c4bc3f9da9c..4fa1fd5e1f3 100644
--- a/keyboards/foxlab/leaf60/universal/rules.mk
+++ b/keyboards/foxlab/leaf60/universal/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/foxlab/time80/rules.mk b/keyboards/foxlab/time80/rules.mk
index f0fbba59f46..b374eca3368 100644
--- a/keyboards/foxlab/time80/rules.mk
+++ b/keyboards/foxlab/time80/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = bootloadhid
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/foxlab/time_re/hotswap/rules.mk b/keyboards/foxlab/time_re/hotswap/rules.mk
index 06dd8dc4cbf..4023d7d3f4a 100644
--- a/keyboards/foxlab/time_re/hotswap/rules.mk
+++ b/keyboards/foxlab/time_re/hotswap/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/foxlab/time_re/universal/rules.mk b/keyboards/foxlab/time_re/universal/rules.mk
index 8a6e35664be..20ed7beacd6 100644
--- a/keyboards/foxlab/time_re/universal/rules.mk
+++ b/keyboards/foxlab/time_re/universal/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/fr4/southpaw75/rules.mk b/keyboards/fr4/southpaw75/rules.mk
index 4411195da2a..9578124554c 100644
--- a/keyboards/fr4/southpaw75/rules.mk
+++ b/keyboards/fr4/southpaw75/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/fr4/unix60/rules.mk b/keyboards/fr4/unix60/rules.mk
index 4411195da2a..9578124554c 100644
--- a/keyboards/fr4/unix60/rules.mk
+++ b/keyboards/fr4/unix60/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/fractal/config.h b/keyboards/fractal/config.h
index 5d4e0d49e3f..b9aeac38557 100755
--- a/keyboards/fractal/config.h
+++ b/keyboards/fractal/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -45,5 +44,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/fractal/rules.mk b/keyboards/fractal/rules.mk
index e559bef6459..914a692f9c6 100755
--- a/keyboards/fractal/rules.mk
+++ b/keyboards/fractal/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/freyr/rules.mk b/keyboards/freyr/rules.mk
index ef898806f21..f20cfda3fa5 100644
--- a/keyboards/freyr/rules.mk
+++ b/keyboards/freyr/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/friedrich/rules.mk b/keyboards/friedrich/rules.mk
index f2e5379ac15..3105d59b775 100644
--- a/keyboards/friedrich/rules.mk
+++ b/keyboards/friedrich/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/frooastboard/rules.mk b/keyboards/frooastboard/rules.mk
index a3db8550f28..dde9957c715 100644
--- a/keyboards/frooastboard/rules.mk
+++ b/keyboards/frooastboard/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/function96/v1/rules.mk b/keyboards/function96/v1/rules.mk
index 8fac9d23a55..99d54b5c275 100644
--- a/keyboards/function96/v1/rules.mk
+++ b/keyboards/function96/v1/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/function96/v2/rules.mk b/keyboards/function96/v2/rules.mk
index 8fac9d23a55..99d54b5c275 100644
--- a/keyboards/function96/v2/rules.mk
+++ b/keyboards/function96/v2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/funky40/rules.mk b/keyboards/funky40/rules.mk
index 962a601b164..9b70c8d5b78 100644
--- a/keyboards/funky40/rules.mk
+++ b/keyboards/funky40/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/gboards/gergoplex/rules.mk b/keyboards/gboards/gergoplex/rules.mk
index 1d0ba8cae2b..422c8411461 100644
--- a/keyboards/gboards/gergoplex/rules.mk
+++ b/keyboards/gboards/gergoplex/rules.mk
@@ -9,7 +9,7 @@ EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
COMMAND_ENABLE = yes
-BOOTMAGIC_ENABLE = lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
LAYOUTS = split_3x5_3
diff --git a/keyboards/geekboards/macropad_v2/config.h b/keyboards/geekboards/macropad_v2/config.h
index 4b0949ff954..cdb3a7dbe82 100644
--- a/keyboards/geekboards/macropad_v2/config.h
+++ b/keyboards/geekboards/macropad_v2/config.h
@@ -43,28 +43,59 @@
#ifdef RGB_MATRIX_ENABLE
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define DISABLE_RGB_MATRIX_ALPHAS_MODS
-#define DISABLE_RGB_MATRIX_BAND_SAT
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define DISABLE_RGB_MATRIX_RAINDROPS
-#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+// 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
-#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_UP_DOWN
-#define RGB_MATRIX_STARTUP_SAT 255
-#define RGB_MATRIX_STARTUP_VAL 192
-#define RGB_MATRIX_STARTUP_SPD 30
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_UP_DOWN
+# define RGB_MATRIX_STARTUP_SAT 255
+# define RGB_MATRIX_STARTUP_VAL 192
+# define RGB_MATRIX_STARTUP_SPD 30
#endif //RGB_MATRIX_ENABLE
#define RGB_DISABLE_WHEN_USB_SUSPENDED
diff --git a/keyboards/geekboards/macropad_v2/rules.mk b/keyboards/geekboards/macropad_v2/rules.mk
index 3b3c2bb53c6..2462b08410f 100644
--- a/keyboards/geekboards/macropad_v2/rules.mk
+++ b/keyboards/geekboards/macropad_v2/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/geekboards/tester/config.h b/keyboards/geekboards/tester/config.h
index 3e3daccd577..ac3b95c7e76 100644
--- a/keyboards/geekboards/tester/config.h
+++ b/keyboards/geekboards/tester/config.h
@@ -26,14 +26,59 @@
#define RGB_DISABLE_AFTER_TIMEOUT 0
#define RGB_DISABLE_WHEN_USB_SUSPENDED
#define RGB_MATRIX_KEYPRESSES
-#define DISABLE_RGB_MATRIX_SPLASH
-#define DISABLE_RGB_MATRIX_MULTISPLASH
-#define DISABLE_RGB_MATRIX_SOLID_SPLASH
-#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define DRIVER_ADDR_1 0b1110100
-#define DRIVER_ADDR_2 0b1110101
-#define DRIVER_COUNT 2
-#define DRIVER_1_LED_TOTAL 8
-#define DRIVER_2_LED_TOTAL 0
-#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+// 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
+
+# define DRIVER_ADDR_1 0b1110100
+# define DRIVER_ADDR_2 0b1110101
+# define DRIVER_COUNT 2
+# define DRIVER_1_LED_TOTAL 8
+# define DRIVER_2_LED_TOTAL 0
+# define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
#endif
diff --git a/keyboards/geekboards/tester/rules.mk b/keyboards/geekboards/tester/rules.mk
index 63c594db45e..1783008e01a 100644
--- a/keyboards/geekboards/tester/rules.mk
+++ b/keyboards/geekboards/tester/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/geekboards/tester/tester.c b/keyboards/geekboards/tester/tester.c
index 532df7a5310..70865c461f4 100644
--- a/keyboards/geekboards/tester/tester.c
+++ b/keyboards/geekboards/tester/tester.c
@@ -1,5 +1,5 @@
#include "tester.h"
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/geminate60/rules.mk b/keyboards/geminate60/rules.mk
index d4807fc2736..722be24d1b1 100644
--- a/keyboards/geminate60/rules.mk
+++ b/keyboards/geminate60/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/generic_panda/panda65_01/rules.mk b/keyboards/generic_panda/panda65_01/rules.mk
index a095bbb9e74..c2aea0d505f 100644
--- a/keyboards/generic_panda/panda65_01/rules.mk
+++ b/keyboards/generic_panda/panda65_01/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/genone/eclipse_65/rules.mk b/keyboards/genone/eclipse_65/rules.mk
index 51ae8658e1c..9d2145ff0a0 100644
--- a/keyboards/genone/eclipse_65/rules.mk
+++ b/keyboards/genone/eclipse_65/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/genone/g1_65/rules.mk b/keyboards/genone/g1_65/rules.mk
index 51ae8658e1c..9d2145ff0a0 100644
--- a/keyboards/genone/g1_65/rules.mk
+++ b/keyboards/genone/g1_65/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/gergo/keymaps/oled/keymap.c b/keyboards/gergo/keymaps/oled/keymap.c
index 7e19a799ee4..ab374b93322 100644
--- a/keyboards/gergo/keymaps/oled/keymap.c
+++ b/keyboards/gergo/keymaps/oled/keymap.c
@@ -130,13 +130,14 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180;
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
static const char PROGMEM font_logo[] = {
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
oled_write_P(font_logo, false);
+ return false;
}
//for (int i = 0; i < fontLen; i++) {
//oled_write_char(pgm_read_byte(lain+i), false);
diff --git a/keyboards/gergo/rules.mk b/keyboards/gergo/rules.mk
index eee431f40aa..b5752ad934d 100644
--- a/keyboards/gergo/rules.mk
+++ b/keyboards/gergo/rules.mk
@@ -8,7 +8,7 @@ CUSTOM_MATRIX = yes
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
DEBOUNCE_TYPE = sym_eager_pr
SRC += matrix.c
diff --git a/keyboards/getta25/keymaps/oled/keymap.c b/keyboards/getta25/keymaps/oled/keymap.c
index 4fbaf3ec283..7d8151b86d3 100644
--- a/keyboards/getta25/keymaps/oled/keymap.c
+++ b/keyboards/getta25/keymaps/oled/keymap.c
@@ -182,7 +182,7 @@ void render_status(void) {
render_keylock_status(host_keyboard_led_state());
}
-void oled_task_user(void) {
+bool oled_task_user(void) {
static const char PROGMEM font_logo[] = {
0x80,0x81,0x82,0x83,0x84,
0xa0,0xa1,0xa2,0xa3,0xa4,
@@ -199,6 +199,7 @@ void oled_task_user(void) {
oled_write_P(font_logo, false);
render_status(); // Renders the current keyboard state (layer, lock)
+ return false;
}
#endif
diff --git a/keyboards/ggkeyboards/genesis/hotswap/rules.mk b/keyboards/ggkeyboards/genesis/hotswap/rules.mk
index c5db939979c..26dae43913d 100644
--- a/keyboards/ggkeyboards/genesis/hotswap/rules.mk
+++ b/keyboards/ggkeyboards/genesis/hotswap/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/ggkeyboards/genesis/solder/rules.mk b/keyboards/ggkeyboards/genesis/solder/rules.mk
index c5db939979c..26dae43913d 100644
--- a/keyboards/ggkeyboards/genesis/solder/rules.mk
+++ b/keyboards/ggkeyboards/genesis/solder/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/gh60/revc/rules.mk b/keyboards/gh60/revc/rules.mk
index da3aaf32378..395f5dc83ad 100644
--- a/keyboards/gh60/revc/rules.mk
+++ b/keyboards/gh60/revc/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
# CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/gh60/satan/keymaps/denolfe/rules.mk b/keyboards/gh60/satan/keymaps/denolfe/rules.mk
index e10bd7a09e4..07feaa8a407 100644
--- a/keyboards/gh60/satan/keymaps/denolfe/rules.mk
+++ b/keyboards/gh60/satan/keymaps/denolfe/rules.mk
@@ -2,7 +2,7 @@
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
diff --git a/keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk b/keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk
index f945cdf6e34..bb2d79b90b3 100644
--- a/keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk
+++ b/keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk
@@ -1,4 +1,4 @@
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/gh60/satan/keymaps/olligranlund_iso/rules.mk b/keyboards/gh60/satan/keymaps/olligranlund_iso/rules.mk
index b380a2710e1..7041837aabb 100644
--- a/keyboards/gh60/satan/keymaps/olligranlund_iso/rules.mk
+++ b/keyboards/gh60/satan/keymaps/olligranlund_iso/rules.mk
@@ -2,7 +2,7 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
diff --git a/keyboards/gh60/satan/rules.mk b/keyboards/gh60/satan/rules.mk
index 98178e17d5e..11fca23b724 100644
--- a/keyboards/gh60/satan/rules.mk
+++ b/keyboards/gh60/satan/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/gh60/v1p3/rules.mk b/keyboards/gh60/v1p3/rules.mk
index d5d984b208c..855a9c1e3fb 100644
--- a/keyboards/gh60/v1p3/rules.mk
+++ b/keyboards/gh60/v1p3/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/gh80_3000/config.h b/keyboards/gh80_3000/config.h
index 68a405c8d98..71adb3e2499 100644
--- a/keyboards/gh80_3000/config.h
+++ b/keyboards/gh80_3000/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -44,5 +43,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/gh80_3000/gh80_3000.h b/keyboards/gh80_3000/gh80_3000.h
index 803d30ece51..9c58d6fe585 100644
--- a/keyboards/gh80_3000/gh80_3000.h
+++ b/keyboards/gh80_3000/gh80_3000.h
@@ -1,138 +1,143 @@
-#ifndef GH80_3000
-#define GH80_3000
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// default keymap: all 117 keys with ANSI Enter
#define LAYOUT( \
- K000, K001, K002, K003, K300, K301, K302, K303, K306, K307, K308, K309, K310, K004, K005, K006, K007, K008, K009, K010, \
- K100, K101, K102, K103, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K104, K105, K106, K107, K108, K109, K110, \
- K200, K201, K202, K203, K500, K501, K502, K503, K505, K506, K507, K508, K509, K510, K204, K205, K206, K207, K208, K209, K210, \
- K800, K801, K802, K803, K600, K601, K602, K603, K606, K607, K608, K609, K610, K807, K808, K809, K810, \
- K900, K901, K902, K903, K700, K701, K702, K703, K705, K706, K707, K708, K709, K710, K906, K907, K908, K909, K910, \
- KA00, KA01, KA02, KA03, K804, K805, K806, K604, K605, K904, K905, KA04, KA05, KA06, KA07, KA08, KA09, KA10 \
+ k00, k01, k02, k03, k30, k31, k32, k33, k36, k37, k38, k39, k3A, k04, k05, k06, k07, k08, k09, k0A, \
+\
+ k10, k11, k12, k13, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k14, k15, k16, k17, k18, k19, k1A, \
+ k20, k21, k22, k23, k50, k51, k52, k53, k55, k56, k57, k58, k59, k5A, k24, k25, k26, k27, k28, k29, k2A, \
+ k80, k81, k82, k83, k60, k61, k62, k63, k66, k67, k68, k69, k6A, k87, k88, k89, k8A, \
+ k90, k91, k92, k93, k70, k71, k72, k73, k75, k76, k77, k78, k79, k7A, k96, k97, k98, k99, k9A, \
+ kA0, kA1, kA2, kA3, k84, k85, k86, k64, k65, k94, k95, kA4, kA5, kA6, kA7, kA8, kA9, kAA \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210 }, \
- { K300, K301, K302, K303, KC_NO, KC_NO, K306, K307, K308, K309, K310 }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410 }, \
- { K500, K501, K502, K503, KC_NO, K505, K506, K507, K508, K509, K510 }, \
- { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610 }, \
- { K700, K701, K702, K703, KC_NO, K705, K706, K707, K708, K709, K710 }, \
- { K800, K801, K802, K803, K804, K805, K806, K807, K808, K809, K810 }, \
- { K900, K901, K902, K903, K904, K905, K906, K907, K908, K909, K910 }, \
- { KA00, KA01, KA02, KA03, KA04, KA05, KA06, KA07, KA08, KA09, KA10 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A }, \
+ { k30, k31, k32, k33, XXX, XXX, k36, k37, k38, k39, k3A }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A }, \
+ { k50, k51, k52, k53, XXX, k55, k56, k57, k58, k59, k5A }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6A }, \
+ { k70, k71, k72, k73, XXX, k75, k76, k77, k78, k79, k7A }, \
+ { k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8A }, \
+ { k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, k9A }, \
+ { kA0, kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8, kA9, kAA } \
}
// default ISO keymap: all 117 keys with ISO Enter
#define LAYOUT_iso( \
- K000, K001, K002, K003, K300, K301, K302, K303, K306, K307, K308, K309, K310, K004, K005, K006, K007, K008, K009, K010, \
- K100, K101, K102, K103, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K104, K105, K106, K107, K108, K109, K110, \
- K200, K201, K202, K203, K500, K501, K502, K503, K505, K506, K507, K508, K509, K204, K205, K206, K207, K208, K209, K210, \
- K800, K801, K802, K803, K600, K601, K602, K603, K606, K607, K608, K609, K510, K610, K807, K808, K809, K810, \
- K900, K901, K902, K903, K700, K701, K702, K703, K705, K706, K707, K708, K709, K710, K906, K907, K908, K909, K910, \
- KA00, KA01, KA02, KA03, K804, K805, K806, K604, K605, K904, K905, KA04, KA05, KA06, KA07, KA08, KA09, KA10 \
+ k00, k01, k02, k03, k30, k31, k32, k33, k36, k37, k38, k39, k3A, k04, k05, k06, k07, k08, k09, k0A, \
+\
+ k10, k11, k12, k13, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k14, k15, k16, k17, k18, k19, k1A, \
+ k20, k21, k22, k23, k50, k51, k52, k53, k55, k56, k57, k58, k59, k24, k25, k26, k27, k28, k29, k2A, \
+ k80, k81, k82, k83, k60, k61, k62, k63, k66, k67, k68, k69, k5A, k6A, k87, k88, k89, k8A, \
+ k90, k91, k92, k93, k70, k71, k72, k73, k75, k76, k77, k78, k79, k7A, k96, k97, k98, k99, k9A, \
+ kA0, kA1, kA2, kA3, k84, k85, k86, k64, k65, k94, k95, kA4, kA5, kA6, kA7, kA8, kA9, kAA \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210 }, \
- { K300, K301, K302, K303, KC_NO, KC_NO, K306, K307, K308, K309, K310 }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410 }, \
- { K500, K501, K502, K503, KC_NO, K505, K506, K507, K508, K509, K510 }, \
- { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610 }, \
- { K700, K701, K702, K703, KC_NO, K705, K706, K707, K708, K709, K710 }, \
- { K800, K801, K802, K803, K804, K805, K806, K807, K808, K809, K810 }, \
- { K900, K901, K902, K903, K904, K905, K906, K907, K908, K909, K910 }, \
- { KA00, KA01, KA02, KA03, KA04, KA05, KA06, KA07, KA08, KA09, KA10 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A }, \
+ { k30, k31, k32, k33, XXX, XXX, k36, k37, k38, k39, k3A }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A }, \
+ { k50, k51, k52, k53, XXX, k55, k56, k57, k58, k59, k5A }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6A }, \
+ { k70, k71, k72, k73, XXX, k75, k76, k77, k78, k79, k7A }, \
+ { k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8A }, \
+ { k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, k9A }, \
+ { kA0, kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8, kA9, kAA } \
}
// Standard ANSI Keyboard
#define LAYOUT_fullsize_ansi( \
- K000, K001, K002, K003, K300, K301, K302, K303, K306, K307, K308, K309, K310, K004, K005, K006, \
- K100, K101, K102, K103, K400, K401, K402, K403, K404, K405, K406, K407, K408, K410, K104, K105, K106, K107, K108, K109, K110, \
- K200, K201, K202, K203, K500, K501, K502, K503, K505, K506, K507, K508, K509, K510, K204, K205, K206, K207, K208, K209, K810, \
- K800, K801, K802, K803, K600, K601, K602, K603, K606, K607, K608, K609, K610, K807, K808, K809, \
- K900, K902, K903, K700, K701, K702, K703, K705, K706, K707, K708, K709, K906, K907, K908, K909, KA10, \
- KA00, KA01, KA02, K805, K604, K605, K904, K905, KA04, KA05, KA06, KA07, KA09 \
+ k00, k01, k02, k03, k30, k31, k32, k33, k36, k37, k38, k39, k3A, k04, k05, k06, \
+\
+ k10, k11, k12, k13, k40, k41, k42, k43, k44, k45, k46, k47, k48, k4A, k14, k15, k16, k17, k18, k19, k1A, \
+ k20, k21, k22, k23, k50, k51, k52, k53, k55, k56, k57, k58, k59, k5A, k24, k25, k26, k27, k28, k29, k8A, \
+ k80, k81, k82, k83, k60, k61, k62, k63, k66, k67, k68, k69, k6A, k87, k88, k89, \
+ k90, k92, k93, k70, k71, k72, k73, k75, k76, k77, k78, k79, k96, k97, k98, k99, kAA, \
+ kA0, kA1, kA2, k85, k64, k65, k94, k95, kA4, kA5, kA6, kA7, kA9 \
) { \
- { K000, K001, K002, K003, K004, K005, K006, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
- { K300, K301, K302, K303, KC_NO, KC_NO, K306, K307, K308, K309, K310 }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, KC_NO, K410 }, \
- { K500, K501, K502, K503, KC_NO, K505, K506, K507, K508, K509, K510 }, \
- { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610 }, \
- { K700, K701, K702, K703, KC_NO, K705, K706, K707, K708, K709, KC_NO }, \
- { K800, K801, K802, K803, KC_NO, K805, KC_NO, K807, K808, K809, K810 }, \
- { K900, KC_NO, K902, K903, K904, K905, K906, K907, K908, K909, KC_NO }, \
- { KA00, KA01, KA02, KC_NO, KA04, KA05, KA06, KA07, KC_NO, KA09, KA10 } \
+ { k00, k01, k02, k03, k04, k05, k06, XXX, XXX, XXX, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, XXX }, \
+ { k30, k31, k32, k33, XXX, XXX, k36, k37, k38, k39, k3A }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, XXX, k4A }, \
+ { k50, k51, k52, k53, XXX, k55, k56, k57, k58, k59, k5A }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6A }, \
+ { k70, k71, k72, k73, XXX, k75, k76, k77, k78, k79, XXX }, \
+ { k80, k81, k82, k83, XXX, k85, XXX, k87, k88, k89, k8A }, \
+ { k90, XXX, k92, k93, k94, k95, k96, k97, k98, k99, XXX }, \
+ { kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, XXX, kA9, kAA } \
}
// Standard ISO Keyboard
#define LAYOUT_fullsize_iso( \
- K000, K001, K002, K003, K300, K301, K302, K303, K306, K307, K308, K309, K310, K004, K005, K006, \
- K100, K101, K102, K103, K400, K401, K402, K403, K404, K405, K406, K407, K408, K410, K104, K105, K106, K107, K108, K109, K110, \
- K200, K201, K202, K203, K500, K501, K502, K503, K505, K506, K507, K508, K509, K204, K205, K206, K207, K208, K209, K810, \
- K800, K801, K802, K803, K600, K601, K602, K603, K606, K607, K608, K609, K510, K610, K807, K808, K809, \
- K900, K901, K902, K903, K700, K701, K702, K703, K705, K706, K707, K708, K709, K906, K907, K908, K909, KA10, \
- KA00, KA01, KA02, K805, K604, K605, K904, K905, KA04, KA05, KA06, KA07, KA09 \
+ k00, k01, k02, k03, k30, k31, k32, k33, k36, k37, k38, k39, k3A, k04, k05, k06, \
+\
+ k10, k11, k12, k13, k40, k41, k42, k43, k44, k45, k46, k47, k48, k4A, k14, k15, k16, k17, k18, k19, k1A, \
+ k20, k21, k22, k23, k50, k51, k52, k53, k55, k56, k57, k58, k59, k24, k25, k26, k27, k28, k29, k8A, \
+ k80, k81, k82, k83, k60, k61, k62, k63, k66, k67, k68, k69, k5A, k6A, k87, k88, k89, \
+ k90, k91, k92, k93, k70, k71, k72, k73, k75, k76, k77, k78, k79, k96, k97, k98, k99, kAA, \
+ kA0, kA1, kA2, k85, k64, k65, k94, k95, kA4, kA5, kA6, kA7, kA9 \
) { \
- { K000, K001, K002, K003, K004, K005, K006, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
- { K300, K301, K302, K303, KC_NO, KC_NO, K306, K307, K308, K309, K310 }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, KC_NO, K410 }, \
- { K500, K501, K502, K503, KC_NO, K505, K506, K507, K508, K509, K510 }, \
- { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610 }, \
- { K700, K701, K702, K703, KC_NO, K705, K706, K707, K708, K709, KC_NO }, \
- { K800, K801, K802, K803, KC_NO, K805, KC_NO, K807, K808, K809, K810 }, \
- { K900, K901, K902, K903, K904, K905, K906, K907, K908, K909, KC_NO }, \
- { KA00, KA01, KA02, KC_NO, KA04, KA05, KA06, KA07, KC_NO, KA09, KA10 } \
+ { k00, k01, k02, k03, k04, k05, k06, XXX, XXX, XXX, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, XXX }, \
+ { k30, k31, k32, k33, XXX, XXX, k36, k37, k38, k39, k3A }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, XXX, k4A }, \
+ { k50, k51, k52, k53, XXX, k55, k56, k57, k58, k59, k5A }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6A }, \
+ { k70, k71, k72, k73, XXX, k75, k76, k77, k78, k79, XXX }, \
+ { k80, k81, k82, k83, XXX, k85, XXX, k87, k88, k89, k8A }, \
+ { k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, XXX }, \
+ { kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, XXX, kA9, kAA } \
}
// Winkeyless ANSI Keyboard
#define LAYOUT_fullsize_ansi_wkl( \
- K000, K001, K002, K003, K300, K301, K302, K303, K306, K307, K308, K309, K310, K004, K005, K006, \
- K100, K101, K102, K103, K400, K401, K402, K403, K404, K405, K406, K407, K408, K410, K104, K105, K106, K107, K108, K109, K110, \
- K200, K201, K202, K203, K500, K501, K502, K503, K505, K506, K507, K508, K509, K510, K204, K205, K206, K207, K208, K209, K810, \
- K800, K801, K802, K803, K600, K601, K602, K603, K606, K607, K608, K609, K610, K807, K808, K809, \
- K900, K902, K903, K700, K701, K702, K703, K705, K706, K707, K708, K709, K906, K907, K908, K909, KA10, \
- KA00, KA02, K805, K605, K905, KA04, KA05, KA06, KA07, KA09 \
+ k00, k01, k02, k03, k30, k31, k32, k33, k36, k37, k38, k39, k3A, k04, k05, k06, \
+\
+ k10, k11, k12, k13, k40, k41, k42, k43, k44, k45, k46, k47, k48, k4A, k14, k15, k16, k17, k18, k19, k1A, \
+ k20, k21, k22, k23, k50, k51, k52, k53, k55, k56, k57, k58, k59, k5A, k24, k25, k26, k27, k28, k29, k8A, \
+ k80, k81, k82, k83, k60, k61, k62, k63, k66, k67, k68, k69, k6A, k87, k88, k89, \
+ k90, k92, k93, k70, k71, k72, k73, k75, k76, k77, k78, k79, k96, k97, k98, k99, kAA, \
+ kA0, kA2, k85, k65, k95, kA4, kA5, kA6, kA7, kA9 \
) { \
- { K000, K001, K002, K003, K004, K005, K006, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
- { K300, K301, K302, K303, KC_NO, KC_NO, K306, K307, K308, K309, K310 }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, KC_NO, K410 }, \
- { K500, K501, K502, K503, KC_NO, K505, K506, K507, K508, K509, K510 }, \
- { K600, K601, K602, K603, KC_NO, K605, K606, K607, K608, K609, K610 }, \
- { K700, K701, K702, K703, KC_NO, K705, K706, K707, K708, K709, KC_NO }, \
- { K800, K801, K802, K803, KC_NO, K805, KC_NO, K807, K808, K809, K810 }, \
- { K900, KC_NO, K902, K903, KC_NO, K905, K906, K907, K908, K909, KC_NO }, \
- { KA00, KC_NO, KA02, KC_NO, KA04, KA05, KA06, KA07, KC_NO, KA09, KA10 } \
+ { k00, k01, k02, k03, k04, k05, k06, XXX, XXX, XXX, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, XXX }, \
+ { k30, k31, k32, k33, XXX, XXX, k36, k37, k38, k39, k3A }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, XXX, k4A }, \
+ { k50, k51, k52, k53, XXX, k55, k56, k57, k58, k59, k5A }, \
+ { k60, k61, k62, k63, XXX, k65, k66, k67, k68, k69, k6A }, \
+ { k70, k71, k72, k73, XXX, k75, k76, k77, k78, k79, XXX }, \
+ { k80, k81, k82, k83, XXX, k85, XXX, k87, k88, k89, k8A }, \
+ { k90, XXX, k92, k93, XXX, k95, k96, k97, k98, k99, XXX }, \
+ { kA0, XXX, kA2, XXX, kA4, kA5, kA6, kA7, XXX, kA9, kAA } \
}
// Winkeyless ISO Keyboard
#define LAYOUT_fullsize_iso_wkl( \
- K000, K001, K002, K003, K300, K301, K302, K303, K306, K307, K308, K309, K310, K004, K005, K006, \
- K100, K101, K102, K103, K400, K401, K402, K403, K404, K405, K406, K407, K408, K410, K104, K105, K106, K107, K108, K109, K110, \
- K200, K201, K202, K203, K500, K501, K502, K503, K505, K506, K507, K508, K509, K204, K205, K206, K207, K208, K209, K810, \
- K800, K801, K802, K803, K600, K601, K602, K603, K606, K607, K608, K609, K510, K610, K807, K808, K809, \
- K900, K901, K902, K903, K700, K701, K702, K703, K705, K706, K707, K708, K709, K906, K907, K908, K909, KA10, \
- KA00, KA02, K805, K605, K905, KA04, KA05, KA06, KA07, KA09 \
+ k00, k01, k02, k03, k30, k31, k32, k33, k36, k37, k38, k39, k3A, k04, k05, k06, \
+\
+ k10, k11, k12, k13, k40, k41, k42, k43, k44, k45, k46, k47, k48, k4A, k14, k15, k16, k17, k18, k19, k1A, \
+ k20, k21, k22, k23, k50, k51, k52, k53, k55, k56, k57, k58, k59, k24, k25, k26, k27, k28, k29, k8A, \
+ k80, k81, k82, k83, k60, k61, k62, k63, k66, k67, k68, k69, k5A, k6A, k87, k88, k89, \
+ k90, k91, k92, k93, k70, k71, k72, k73, k75, k76, k77, k78, k79, k96, k97, k98, k99, kAA, \
+ kA0, kA2, k85, k65, k95, kA4, kA5, kA6, kA7, kA9 \
) { \
- { K000, K001, K002, K003, K004, K005, K006, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
- { K300, K301, K302, K303, KC_NO, KC_NO, K306, K307, K308, K309, K310 }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, KC_NO, K410 }, \
- { K500, K501, K502, K503, KC_NO, K505, K506, K507, K508, K509, K510 }, \
- { K600, K601, K602, K603, KC_NO, K605, K606, K607, K608, K609, K610 }, \
- { K700, K701, K702, K703, KC_NO, K705, K706, K707, K708, K709, KC_NO }, \
- { K800, K801, K802, K803, KC_NO, K805, KC_NO, K807, K808, K809, K810 }, \
- { K900, K901, K902, K903, KC_NO, K905, K906, K907, K908, K909, KC_NO }, \
- { KA00, KC_NO, KA02, KC_NO, KA04, KA05, KA06, KA07, KC_NO, KA09, KA10 } \
+ { k00, k01, k02, k03, k04, k05, k06, XXX, XXX, XXX, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, XXX }, \
+ { k30, k31, k32, k33, XXX, XXX, k36, k37, k38, k39, k3A }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, XXX, k4A }, \
+ { k50, k51, k52, k53, XXX, k55, k56, k57, k58, k59, k5A }, \
+ { k60, k61, k62, k63, XXX, k65, k66, k67, k68, k69, k6A }, \
+ { k70, k71, k72, k73, XXX, k75, k76, k77, k78, k79, XXX }, \
+ { k80, k81, k82, k83, XXX, k85, XXX, k87, k88, k89, k8A }, \
+ { k90, k91, k92, k93, XXX, k95, k96, k97, k98, k99, XXX }, \
+ { kA0, XXX, kA2, XXX, kA4, kA5, kA6, kA7, XXX, kA9, kAA } \
}
-
-#endif
diff --git a/keyboards/gingham/rules.mk b/keyboards/gingham/rules.mk
index 63bf46ff8f8..9f2fc0ee5c4 100644
--- a/keyboards/gingham/rules.mk
+++ b/keyboards/gingham/rules.mk
@@ -10,7 +10,7 @@ BOOTLOADER = usbasploader
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/gkeyboard/gkb_m16/rules.mk b/keyboards/gkeyboard/gkb_m16/rules.mk
index 706a8ae201e..cf5d2e685d9 100644
--- a/keyboards/gkeyboard/gkb_m16/rules.mk
+++ b/keyboards/gkeyboard/gkb_m16/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/gmmk/pro/ansi/keymaps/benschaeff/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/benschaeff/keymap.c
index 834727827c0..5f3e3f5fd8f 100644
--- a/keyboards/gmmk/pro/ansi/keymaps/benschaeff/keymap.c
+++ b/keyboards/gmmk/pro/ansi/keymaps/benschaeff/keymap.c
@@ -20,7 +20,7 @@ enum userspace_layers {
};
//custom keycodes
-#define MODS_ALT_MASK (MOD_BIT(KC_LALT)) // Make ALT layer for encoder use
+#define MODS_ALT_MASK (MOD_BIT(KC_LALT)) // Make ALT layer for encoder use
#define MODS_CTRL_MASK (MOD_BIT(KC_LCTL)) // Make CTRL layer for encoder use
#define SWAP_L SGUI(KC_LEFT) // Swap application to left display
#define SWAP_R SGUI(KC_RGHT) // Swap application to right display
diff --git a/keyboards/gmmk/pro/ansi/keymaps/jonavin/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/jonavin/rules.mk
index 90ea42dee51..1ffc2058a26 100644
--- a/keyboards/gmmk/pro/ansi/keymaps/jonavin/rules.mk
+++ b/keyboards/gmmk/pro/ansi/keymaps/jonavin/rules.mk
@@ -1,7 +1,7 @@
VIA_ENABLE = yes
MOUSEKEY_ENABLE = no
TAP_DANCE_ENABLE = yes
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
TD_LSFT_CAPSLOCK_ENABLE = yes
IDLE_TIMEOUT_ENABLE = yes
diff --git a/keyboards/gmmk/pro/ansi/keymaps/mattgauf/ansi.c b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/ansi.c
index b09af297b86..52c9dfdf991 100644
--- a/keyboards/gmmk/pro/ansi/keymaps/mattgauf/ansi.c
+++ b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/ansi.c
@@ -18,7 +18,7 @@
#include "ansi.h"
#ifdef RGB_MATRIX_ENABLE
-led_config_t __flash g_led_config = {{
+led_config_t PROGMEM g_led_config = {{
{ 4, NO_LED, NO_LED, 95, 65, 79, 5, 28 },
{ 8, 2, 9, 0, 10, 75, 1, 7 },
{ 14, 3, 15, NO_LED, 16, 86, 6, 13 },
diff --git a/keyboards/gmmk/pro/ansi/keymaps/paddlegame/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/paddlegame/rules.mk
index 925d8a5a550..a3f5bfd35c0 100644
--- a/keyboards/gmmk/pro/ansi/keymaps/paddlegame/rules.mk
+++ b/keyboards/gmmk/pro/ansi/keymaps/paddlegame/rules.mk
@@ -1,4 +1,4 @@
MOUSEKEY_ENABLE = no
-BOOTMAGIC_ENABLE = lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
RGB_MATRIX_ENABLE = yes
ENCODER_ENABLE = yes
diff --git a/keyboards/gmmk/pro/ansi/keymaps/stickandgum/config.h b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/config.h
index 2566fc6f9cb..78ff96f8b70 100644
--- a/keyboards/gmmk/pro/ansi/keymaps/stickandgum/config.h
+++ b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/config.h
@@ -31,45 +31,45 @@
#define RGB_MATRIX_KEYPRESSES // REACTIVE, SPLASH modes
// Soon we need to ENABLE modes by DEFAULT soon as per: https://github.com/qmk/qmk_firmware/pull/13758 Thanks @noroadsleft
- // #define DISABLE_RGB_MATRIX_SOLID_COLOR // BUILT IN (MAPPED!) Static single color.
- // #define DISABLE_RGB_MATRIX_ALPHAS_MODS // Accenting various keys on the keyboard.
- // #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Top down rainbow!
- #define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Left Right Rainbow (the top-down is better imho).
- // #define DISABLE_RGB_MATRIX_BREATHING // Built in (MAPPED!)
- // #define DISABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right (with white)
- // #define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right (with black)
- #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades sat (RGB_MATRIX_CYCLE_PINWHEEL)
- #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // See above
- #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT // See above
- // #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness (with black)
- #define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard cycling through rainbow
- // #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // BUILT IN (MAPPED!) Full Rainbow Left to Right
- #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
- #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Rainbow circles coming to center.
- #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Two Rainbow circles coming to 1/3 and 2/3 points.
- #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
- // #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // BUILT IN (MAPPED!) - Consider disabling this - my poor eyes.
- #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
- #define DISABLE_RGB_MATRIX_DUAL_BEACON // Two rainbows spinning around keyboards
- #define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Similar to above.
- #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Enough of the spinning rainbows - we get it! :-)
- #define DISABLE_RGB_MATRIX_RAINDROPS // Jellybeans are better.
- // #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation - better than above.
- #define DISABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back
- #define DISABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left
- #define DISABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
- // #define DISABLE_RGB_MATRIX_TYPING_HEATMAP // Hot keys!
- // #define DISABLE_RGB_MATRIX_DIGITAL_RAIN // The Matrix!
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Key hits shown in current hue - all other keys black: wide slightly better imo
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Key hits shown in current hue - all other keys shifted hue
- // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse around a single key hit then fades value out (black otherwise)
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // same as above but a bit too intense imo.
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Column and Row single color fade.
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Column and Row single color fade. (Multi-keys)
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of key hit then fades
- #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multi-key hit then fades
- #define DISABLE_RGB_MATRIX_SPLASH // Full rainbow pulses from key hit. All else black.
- #define DISABLE_RGB_MATRIX_MULTISPLASH // Full rainbow pulses from multi-keys. All else black.
- #define DISABLE_RGB_MATRIX_SOLID_SPLASH // Single color pulses from key hit. All else black. (Using solid_reactive_wide instead).
- #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH // Single color pulses from muli-keys. All else black. (Using solid_reactive_wide instead).
+// #undef ENABLE_RGB_MATRIX_SOLID_COLOR // BUILT IN (MAPPED!) Static single color.
+// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Accenting various keys on the keyboard.
+// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Top down rainbow!
+# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Left Right Rainbow (the top-down is better imho).
+ // #undef ENABLE_RGB_MATRIX_BREATHING // Built in (MAPPED!)
+ // #undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right (with white)
+ // #undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right (with black)
+# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades sat (RGB_MATRIX_CYCLE_PINWHEEL)
+# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // See above
+# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // See above
+ // #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness (with black)
+# undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard cycling through rainbow
+ // #undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // BUILT IN (MAPPED!) Full Rainbow Left to Right
+# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Rainbow circles coming to center.
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Two Rainbow circles coming to 1/3 and 2/3 points.
+# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
+ // #undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // BUILT IN (MAPPED!) - Consider disabling this - my poor eyes.
+# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
+# undef ENABLE_RGB_MATRIX_DUAL_BEACON // Two rainbows spinning around keyboards
+# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Similar to above.
+# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Enough of the spinning rainbows - we get it! :-)
+# undef ENABLE_RGB_MATRIX_RAINDROPS // Jellybeans are better.
+ // #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation - better than above.
+# undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back
+# undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left
+# undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
+ // #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // Hot keys!
+ // #undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // The Matrix!
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Key hits shown in current hue - all other keys black: wide slightly better imo
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Key hits shown in current hue - all other keys shifted hue
+ // #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse around a single key hit then fades value out (black otherwise)
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // same as above but a bit too intense imo.
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Column and Row single color fade.
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Column and Row single color fade. (Multi-keys)
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of key hit then fades
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multi-key hit then fades
+# undef ENABLE_RGB_MATRIX_SPLASH // Full rainbow pulses from key hit. All else black.
+# undef ENABLE_RGB_MATRIX_MULTISPLASH // Full rainbow pulses from multi-keys. All else black.
+# undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Single color pulses from key hit. All else black. (Using solid_reactive_wide instead).
+# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Single color pulses from muli-keys. All else black. (Using solid_reactive_wide instead).
#endif
diff --git a/keyboards/gmmk/pro/ansi/rules.mk b/keyboards/gmmk/pro/ansi/rules.mk
index ee84c487238..a10fe8e5ca9 100644
--- a/keyboards/gmmk/pro/ansi/rules.mk
+++ b/keyboards/gmmk/pro/ansi/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/gmmk/pro/config.h b/keyboards/gmmk/pro/config.h
index 693b86539be..bb2cca19216 100644
--- a/keyboards/gmmk/pro/config.h
+++ b/keyboards/gmmk/pro/config.h
@@ -65,6 +65,55 @@
#define DRIVER_COUNT 2
+// 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
+
/* 1000Hz USB polling - it's the default on stock firmware */
#define USB_POLLING_INTERVAL_MS 1
diff --git a/keyboards/gmmk/pro/iso/rules.mk b/keyboards/gmmk/pro/iso/rules.mk
index ee84c487238..a10fe8e5ca9 100644
--- a/keyboards/gmmk/pro/iso/rules.mk
+++ b/keyboards/gmmk/pro/iso/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/gorthage_truck/rules.mk b/keyboards/gorthage_truck/rules.mk
index a48c2c8768b..21c0c67b117 100644
--- a/keyboards/gorthage_truck/rules.mk
+++ b/keyboards/gorthage_truck/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/gray_studio/cod67/cod67.h b/keyboards/gray_studio/cod67/cod67.h
index ed4a7299718..85ebbab61bc 100644
--- a/keyboards/gray_studio/cod67/cod67.h
+++ b/keyboards/gray_studio/cod67/cod67.h
@@ -13,24 +13,21 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef COD67_H
-#define COD67_H
+
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K48, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
- K40, K41, K42, K43, K44, K45, K46, K47, K0D, K49, K4A, K4B, K4C, K4D \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
- { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k48, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k0D, k49, k4A, k4B, k4C, k4D \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D } \
}
-
-#endif
diff --git a/keyboards/gray_studio/space65/rules.mk b/keyboards/gray_studio/space65/rules.mk
index 085a80ab92c..7e7e2133aa4 100644
--- a/keyboards/gray_studio/space65/rules.mk
+++ b/keyboards/gray_studio/space65/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/gray_studio/think65/hotswap/rules.mk b/keyboards/gray_studio/think65/hotswap/rules.mk
index b2fb6341b76..cc1e1b509ca 100644
--- a/keyboards/gray_studio/think65/hotswap/rules.mk
+++ b/keyboards/gray_studio/think65/hotswap/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/gray_studio/think65/solder/rules.mk b/keyboards/gray_studio/think65/solder/rules.mk
index b2fb6341b76..cc1e1b509ca 100644
--- a/keyboards/gray_studio/think65/solder/rules.mk
+++ b/keyboards/gray_studio/think65/solder/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/grid600/press/rules.mk b/keyboards/grid600/press/rules.mk
index 65cc989ca1c..1efd48fa9de 100644
--- a/keyboards/grid600/press/rules.mk
+++ b/keyboards/grid600/press/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/gskt00/config.h b/keyboards/gskt00/config.h
deleted file mode 100755
index 8ab0583cc8e..00000000000
--- a/keyboards/gskt00/config.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#pragma once
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6061
-#define DEVICE_VER 0x0001
-#define MANUFACTURER inachie
-#define PRODUCT GSKT00
-
-/* key matrix size */
-#define MATRIX_ROWS 8
-#define MATRIX_COLS 8
-
-/* key matrix pins */
-#define MATRIX_ROW_PINS { F1, D1, D2, D4, D6, F7, B0, F4 }
-#define MATRIX_COL_PINS { F6, D7, F5, C7, B4, C6, B6, B5 }
-#define UNUSED_PINS
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION COL2ROW
-
-/* Set 0 if debouncing isn't needed */
-#define DEBOUNCE 5
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/gskt00/gskt00.c b/keyboards/gskt00/gskt00.c
deleted file mode 100755
index 89a0040ff37..00000000000
--- a/keyboards/gskt00/gskt00.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "gskt00.h"
-
diff --git a/keyboards/gskt00/gskt00.h b/keyboards/gskt00/gskt00.h
deleted file mode 100755
index 90e9a1ad5ac..00000000000
--- a/keyboards/gskt00/gskt00.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#ifndef GSKT00_H
-#define GSKT00_H
-
-#include "quantum.h"
-
-#define LAYOUT_all( \
- K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K26, K27, \
- K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
- K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
- K31, K41, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, K22, \
- K30, K40, K50, K60, K00, K10, K20 \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K20, K21, K22, K23, K24, K25, K26, K27 }, \
- { K30, K31, K32, K33, K34, K35, K36, K37 }, \
- { K40, K41, K42, K43, K44, K45, K46, K47 }, \
- { K50, K51, K52, K53, K54, K55, K56, K57 }, \
- { K60, K61, K62, K63, K64, K65, K66, K67 }, \
- { KC_NO, K71, K72, K73, K74, K75, K76, K77 } \
-}
-
-#define LAYOUT_60_iso_tsangan( \
- K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K27, \
- K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, \
- K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K24, K23, /* enter */ \
- K31, K41, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, \
- K30, K40, K50, K60, K00, K10, K20 \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { KC_NO, K11, K12, K13, K14, K15, K16, K17 }, \
- { K20, K21, KC_NO, K23, K24, K25, KC_NO, K27 }, \
- { K30, K31, K32, K33, K34, K35, K36, K37 }, \
- { K40, K41, K42, K43, K44, K45, K46, K47 }, \
- { K50, K51, K52, K53, K54, K55, K56, K57 }, \
- { K60, K61, K62, K63, K64, K65, K66, K67 }, \
- { KC_NO, K71, K72, K73, K74, K75, K76, K77 } \
-}
-
-#define LAYOUT_60_ansi_tsangan( \
- K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K27, \
- K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
- K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
- K31, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, \
- K30, K40, K50, K60, K00, K10, K20 \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K20, K21, KC_NO, K23, K24, K25, KC_NO, K27 }, \
- { K30, K31, K32, K33, K34, K35, K36, K37 }, \
- { K40, KC_NO, K42, K43, K44, K45, K46, K47 }, \
- { K50, K51, K52, K53, K54, K55, K56, K57 }, \
- { K60, K61, K62, K63, K64, K65, K66, K67 }, \
- { KC_NO, K71, K72, K73, K74, K75, K76, K77 } \
-}
-
-#endif
diff --git a/keyboards/gskt00/info.json b/keyboards/gskt00/info.json
deleted file mode 100644
index 0b81c585143..00000000000
--- a/keyboards/gskt00/info.json
+++ /dev/null
@@ -1,82 +0,0 @@
-{
- "keyboard_name": "gskt00",
- "url": "",
- "maintainer": "nachie",
- "layouts": {
- "LAYOUT_60_ansi_tsangan": {
- "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
- },
-
- "LAYOUT_60_iso_tsangan": {
- "layout": [{"label":"\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"AltGr", "x":11, "y":4, "w":1.5}, {"label":"Menu", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
- },
-
- "LAYOUT_all": {
- "layout": [
- {"label":"Esc", "x":0, "y":0},
- {"label":"1", "x":1, "y":0},
- {"label":"2", "x":2, "y":0},
- {"label":"3", "x":3, "y":0},
- {"label":"4", "x":4, "y":0},
- {"label":"5", "x":5, "y":0},
- {"label":"6", "x":6, "y":0},
- {"label":"7", "x":7, "y":0},
- {"label":"8", "x":8, "y":0},
- {"label":"9", "x":9, "y":0},
- {"label":"0", "x":10, "y":0},
- {"label":"-", "x":11, "y":0},
- {"label":"=", "x":12, "y":0},
- {"label":"\\", "x":13, "y":0},
- {"label":"`", "x":14, "y":0},
- {"label":"Tab", "x":0, "y":1, "w":1.5},
- {"label":"Q", "x":1.5, "y":1},
- {"label":"W", "x":2.5, "y":1},
- {"label":"E", "x":3.5, "y":1},
- {"label":"R", "x":4.5, "y":1},
- {"label":"T", "x":5.5, "y":1},
- {"label":"Y", "x":6.5, "y":1},
- {"label":"U", "x":7.5, "y":1},
- {"label":"I", "x":8.5, "y":1},
- {"label":"O", "x":9.5, "y":1},
- {"label":"P", "x":10.5, "y":1},
- {"label":"[", "x":11.5, "y":1},
- {"label":"]", "x":12.5, "y":1},
- {"label":"Backspace", "x":13.5, "y":1, "w":1.5},
- {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
- {"label":"A", "x":1.75, "y":2},
- {"label":"S", "x":2.75, "y":2},
- {"label":"D", "x":3.75, "y":2},
- {"label":"F", "x":4.75, "y":2},
- {"label":"G", "x":5.75, "y":2},
- {"label":"H", "x":6.75, "y":2},
- {"label":"J", "x":7.75, "y":2},
- {"label":"K", "x":8.75, "y":2},
- {"label":"L", "x":9.75, "y":2},
- {"label":";", "x":10.75, "y":2},
- {"label":"'", "x":11.75, "y":2},
- {"label":"Enter", "x":12.75, "y":2, "w":2.25},
- {"label":"Shift", "x":0, "y":3, "w":1.25},
- {"label":"ISO \\", "x":1.25, "y":3},
- {"label":"Z", "x":2.25, "y":3},
- {"label":"X", "x":3.25, "y":3},
- {"label":"C", "x":4.25, "y":3},
- {"label":"V", "x":5.25, "y":3},
- {"label":"B", "x":6.25, "y":3},
- {"label":"N", "x":7.25, "y":3},
- {"label":"M", "x":8.25, "y":3},
- {"label":",", "x":9.25, "y":3},
- {"label":".", "x":10.25, "y":3},
- {"label":"/", "x":11.25, "y":3},
- {"label":"Shift", "x":12.25, "y":3, "w":1.75},
- {"label":"Fn", "x":14, "y":3},
- {"label":"Ctrl", "x":0, "y":4, "w":1.5},
- {"label":"GUI", "x":1.5, "y":4},
- {"label":"Alt", "x":2.5, "y":4, "w":1.5},
- {"label":"Space", "x":4, "y":4, "w":7},
- {"label":"Alt", "x":11, "y":4, "w":1.5},
- {"label":"GUI", "x":12.5, "y":4},
- {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
- ]
- }
- }
-}
diff --git a/keyboards/gskt00/keymaps/default/keymap.c b/keyboards/gskt00/keymaps/default/keymap.c
deleted file mode 100755
index 225d0224ea3..00000000000
--- a/keyboards/gskt00/keymaps/default/keymap.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- /* QWERTY */
- LAYOUT_all(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_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_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(3),
- KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(3)),
-
- /* DVORAK */
- LAYOUT_all(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_GRV, KC_BSLS,
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSPC,
- MO(3), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT,
- KC_LSFT, KC_NUBS, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LSFT, MO(3),
- KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL),
-
- /* COLEMAK */
- LAYOUT_all(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS,
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSPC,
- MO(3), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(3),
- KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL),
-
- /* FUNCTION */
- LAYOUT_all(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
- KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLCK, KC_PAUS, KC_UP, KC_PAUS, KC_DEL,
- KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, RGB_TOG)
-
-};
diff --git a/keyboards/gskt00/readme.md b/keyboards/gskt00/readme.md
deleted file mode 100644
index ad03ac819f2..00000000000
--- a/keyboards/gskt00/readme.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# GSKT-00 PCB
-
-Firmware for the GSKT-00 PCB
-
-Keyboard Maintainer: [/u/iNachie](https://github.com/nachie)
-Hardware Supported: GSKT-00 PCB
-Hardware Availability: [/u/iNachie](https://www.reddit.com/user/inachie/)
-
-Make example for this keyboard (after setting up your build environment):
-
- make gskt00:default
-
-Or to make and flash:
-
- make gskt00:default:dfu
-
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/gskt00/rules.mk b/keyboards/gskt00/rules.mk
deleted file mode 100755
index 4e262e042fa..00000000000
--- a/keyboards/gskt00/rules.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader selection
-BOOTLOADER = atmel-dfu
-
-# Build Options
-# comment out to disable the options.
-#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = yes # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-AUDIO_ENABLE = no
-RGBLIGHT_ENABLE = no
-
-LAYOUTS = 60_ansi_tsangan 60_iso_tsangan
diff --git a/keyboards/gvalchca/ga150/rules.mk b/keyboards/gvalchca/ga150/rules.mk
index 0e838d5c5b2..9ae669ce03f 100644
--- a/keyboards/gvalchca/ga150/rules.mk
+++ b/keyboards/gvalchca/ga150/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/gvalchca/spaccboard/rules.mk b/keyboards/gvalchca/spaccboard/rules.mk
index 08d857b5eb7..8d02eb74906 100644
--- a/keyboards/gvalchca/spaccboard/rules.mk
+++ b/keyboards/gvalchca/spaccboard/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/h0oni/hotduck/rules.mk b/keyboards/h0oni/hotduck/rules.mk
index 421c12247b0..5315f0856de 100644
--- a/keyboards/h0oni/hotduck/rules.mk
+++ b/keyboards/h0oni/hotduck/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/hadron/hadron.h b/keyboards/hadron/hadron.h
index c11774729f1..349311270ee 100644
--- a/keyboards/hadron/hadron.h
+++ b/keyboards/hadron/hadron.h
@@ -1,33 +1,27 @@
-#ifndef HADRON_H
-#define HADRON_H
+#pragma once
#include "quantum.h"
-#ifdef KEYBOARD_hadron_ver0
- #include "ver0.h"
-#endif
-#ifdef KEYBOARD_hadron_ver2
- #include "ver2.h"
-#endif
-#ifdef KEYBOARD_hadron_ver3
- #include "ver3.h"
+#if defined(KEYBOARD_hadron_ver0)
+# include "ver0.h"
+#elif defined(KEYBOARD_hadron_ver2)
+# include "ver2.h"
+#elif defined(KEYBOARD_hadron_ver3)
+# include "ver3.h"
#endif
+#define XXX KC_NO
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E \
- ) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, KC_NO, KC_NO, KC_NO }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
- { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, XXX, XXX, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E } \
}
-
-
-#endif
diff --git a/keyboards/hadron/i2c.c b/keyboards/hadron/i2c.c
deleted file mode 100644
index cd2b835d501..00000000000
--- a/keyboards/hadron/i2c.c
+++ /dev/null
@@ -1,166 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-#include
-#include "i2c.h"
-
-#ifdef USE_I2C
-
-// Limits the amount of we wait for any one i2c transaction.
-// Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is
-// 9 bits, a single transaction will take around 90μs to complete.
-//
-// (F_CPU/SCL_CLOCK) => # of μC cycles to transfer a bit
-// poll loop takes at least 8 clock cycles to execute
-#define I2C_LOOP_TIMEOUT (9+1)*(F_CPU/SCL_CLOCK)/8
-
-#define BUFFER_POS_INC() (slave_buffer_pos = (slave_buffer_pos+1)%SLAVE_BUFFER_SIZE)
-
-volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
-
-static volatile uint8_t slave_buffer_pos;
-static volatile bool slave_has_register_set = false;
-
-// Wait for an i2c operation to finish
-inline static
-void i2c_delay(void) {
- uint16_t lim = 0;
- while(!(TWCR & (1<10.
- // Check datasheets for more info.
- TWBR = ((F_CPU/SCL_CLOCK)-16)/2;
-}
-
-// Start a transaction with the given i2c slave address. The direction of the
-// transfer is set with I2C_READ and I2C_WRITE.
-// returns: 0 => success
-// 1 => error
-uint8_t i2c_master_start(uint8_t address) {
- TWCR = (1<